2

Android から J2ME アプリケーションに SMS を送信しようとしています。

私が抱えている問題は、J2ME アプリケーションが着信 SMS メッセージを特定のポートでリッスンし、Android アプリでテキスト SMS をポートに送信できないことです。

ポートを指定できる sendDataMessage を試しましたが、J2ME アプリはそれを受信しません。また、//wma:port_number をメッセージ本文に追加して (ここで読みました)、宛先番号を phone_number:port の形式に設定しましたが、すべて成功しませんでした。

また、ソース コードがないため、J2ME アプリを変更できません。

特定のポートで Android アプリから J2ME アプリに SMS を送信する方法についてのアイデアはありますか?

4

1 に答える 1

0

同じ問題が発生してからしばらく経ちましたので、誰かが私よりも役立つ返信をしてくれることを願っています. (それはいいね)。しかし、これを見て学んだことは次のとおりです。

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) {
    }
}

それが当時私が見つけた唯一の解決策です。誰かがより良いものを持っているなら、私も知りたいです。:-)

于 2012-10-19T10:49:05.217 に答える