同じ問題が発生してからしばらく経ちましたので、誰かが私よりも役立つ返信をしてくれることを願っています. (それはいいね)。しかし、これを見て学んだことは次のとおりです。
JavaME と Android の違い (SMS 送信に関して) は、Android では標準ポートで着信 SMS をキャッチできるのに対し、JavaME では他のポートを使用する必要があることです。
Android から送信されたメッセージは、JavaME プラットフォーム上のsendTextMessage()
のインスタンスとして識別されます。TextMessage
ただし、Android ではポートを指定できないため、JavaME では受信できない標準ポートで送信されます。
sendDataMessage()
ポート番号を指定できるので、もちろん を参照してください。問題はsendDataMessage()
、Android から送信されたメッセージBinaryMessage
が、JavaME プラットフォームで のインスタンスとして識別されることです。したがって、 をリッスンする JavaME コードは、受信TextMessage
中の であるため、決してトリガーされません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) {
}
}
それが当時私が見つけた唯一の解決策です。誰かがより良いものを持っているなら、私も知りたいです。:-)