因为我有同样的问题,所以有一段时间,所以希望有人比我有更多有用的回复。 (那样就好了)。但是,当我看到它时,我学到了这些:
JavaME和Android之间的区别(关于短信发送)是Android可以让您在标准端口上捕获传入的短信,而JavaME强制您使用任何其他端口。
来自Android的与sendTextMessage()
一起发送的消息在JavaME平台上被标识为TextMessage
的实例。但是由于您无法在Android上指定端口,因此它会在标准端口上发送,而JavaME无法接收。
所以你现在看看sendDataMessage()
,因为它可以让你指定一个端口号。问题是:从Android发送的sendDataMessage()
消息在JavaME平台上被标识为BinaryMessage
的实例。因此,侦听TextMessage
的JavaME代码将永远不会触发,因为它正在接收BinaryMessage
。
我能找到的唯一解决方案就是为接收BinaryMessage
时添加一些代码。对传入消息进行解码的方式稍有不同,但是在其他方面做同样的事情。
可悲的是,因为你写的,你没有的JavaME源,你不能做到这一点,但这里是它如何能期待:
String receivedSMS;
public void notifyIncomingMessage(MessageConnection conn) {
try {
Message msg = conn.receive();
if (msg instanceof TextMessage) { // Message sent from J2ME device
TextMessage tmsg = (TextMessage) msg;
receivedSMS = tmsg.getPayloadText();
} else if (msg instanceof BinaryMessage) { // Message sent from Android device
BinaryMessage bmsg = (BinaryMessage)msg;
byte[] ta = bmsg.getPayloadData();
receivedSMS = new String(ta);
}
} catch (Exception e) {
}
}
这是我能找到当时的唯一解决方案。如果有人有更好的,我也想知道。 :-)