0

无论如何,无需导入即可收听出站短信javax.wireless.messaging

我正在尝试编写一个应用程序来侦听从设备发送的短信,然后通过电子邮件发送短信的消息,但我收到错误消息:

对 Message 的引用不明确,javax.wireless.messaging 中的 javax.wireless.messaging.Message 类和 net.rim.blackberry.api.mail 中的 net.rim.blackberry.api.mail.Message 类都匹配

我需要导入net.rim.blackberry.api.mail.Message才能发送电子邮件。

有没有办法解决这个问题,因为这两个包似乎发生了冲突。

我的代码:

public void notifyIncomingMessage(MessageConnection messageconnection) {}


public void notifyOutgoingMessage(javax.wireless.messaging.Message message) {

    try {
        String address = message.getAddress();

        String msg = null;

        if ( message instanceof TextMessage ) {
            TextMessage tm = (TextMessage)message;
            msg = tm.getPayloadText();

        } else if (message instanceof BinaryMessage) {
            StringBuffer buf = new StringBuffer();
            byte[] data = ((BinaryMessage) message).getPayloadData();
            msg = new String(data, "UTF-8");

            Store store = Session.getDefaultInstance().getStore();

            Folder[] folders = store.list(Folder.SENT);
            Folder sentfolder = folders[0];

            Message in = new Message(sentfolder);
            Address recipients[] = new Address[1];

            recipients[0]= new Address("me@us.com", "user");

            in.addRecipients(Message.RecipientType.TO, recipients);
            in.setSubject("Outgoing sms");
            in.setContent("You have just sent an sms to: " + address + "\n" + "Message: " + msg);

            in.setPriority(Message.Priority.HIGH);

            Transport.send(in);

            in.setFlag(Message.Flag.OPENED, true);
            Folder folder = in.getFolder();
            folder.deleteMessage(in);               
        }
    } catch (IOException me) {
        System.out.println(me);
    }
}
} 
4

1 回答 1

2

在 Java 中你永远不需要任何东西。import导入包只是一种快捷方式,因此您不必完全输入整个包名。如果您有一个Message要使用的类,并且它存在于两个包中(您都需要),那么我不会import使用它们。

简单地说,总是用它们的完全限定名称来引用它们:

net.rim.blackberry.api.mail.Message

javax.wireless.messaging.Message 

只是打字多一点。

于 2012-09-16T03:35:15.230 回答