我已经有一段时间没有遇到同样的问题了,所以希望有人能提供比我更有用的回复。(那样就好了)。但是当我看到它时,我学到了:
JavaME 和 Android 之间的区别(关于 SMS 发送)在于 Android 允许您在标准端口上捕获传入的 SMS,而 JavaME 强制您使用任何其他端口。
从 Android发送的消息被标识为JavaME 平台上的sendTextMessage()
一个实例。TextMessage
但是由于您无法在 Android 上指定端口,因此它在标准端口上发送 - 您无法使用 JavaME 接收。
所以你当然要看sendDataMessage()
,因为它可以让你指定一个端口号。问题是:从 Android 发送的消息,在 JavaME 平台上sendDataMessage()
被识别为一个实例。BinaryMessage
因此,侦听 a 的 JavaME 代码TextMessage
永远不会触发,因为它BinaryMessage
正在接收 a。
我能找到的唯一解决方案是BinaryMessage
在收到 a 时添加一些代码。解码传入消息的方式略有不同,但做同样的事情。
遗憾的是,您无法执行此操作,因为您没有 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) {
}
}
那是我当时能找到的唯一解决方案。如果有人有更好的,我也想知道。:-)