因爲我有同樣的問題,所以有一段時間,所以希望有人比我有更多有用的回覆。 (那樣就好了)。但是,當我看到它時,我學到了這些:
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) {
}
}
這是我能找到當時的唯一解決方案。如果有人有更好的,我也想知道。 :-)