1

WMA APIを使用して、J2MEでSMS送受信テストアプリケーションを開発しようとしています。送信と受信に別々のスレッドがあります。

送信スレッドのrunメソッド-

public void run() {
        try {

            MessageConnection connection = (MessageConnection) Connector.open("sms://+" + number + ":1234");
            BinaryMessage messageBody = (BinaryMessage) connection.newMessage(connection.BINARY_MESSAGE);
            messageBody.setPayloadData(message.getBytes());
            connection.send(messageBody);
            connection.close();


        } catch (IOException ex) {

        }
    } 

受信スレッドのrunメソッド

public void run() {
        try {
            while (true) {
                MessageConnection connection = (MessageConnection) Connector.open("sms://:1234");
                BinaryMessage messageBody = (BinaryMessage) connection.receive();
                message = new String(messageBody.getPayloadData());
                number = messageBody.getAddress();
                number = number.substring(6, 15);
                App.setDisplay(number, message);
                connection.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();

        }
    }

startApp()で受信スレッドを初期化し、sendコマンドが押されたときに送信スレッドを初期化しています。私が抱えている問題は、2つのエミュレーターを使用すると、両側でメッセージを送信できないことです。一方のエミュレータはもう一方のエミュレータにメッセージを継続的に送信できますが、もう一方のエミュレータがメッセージを送信しようとしても、メッセージは受信されません。

エミュレータコンソールがメッセージを受信すると、次のように表示されます-

[情報][sms]## javacall:SMS送信...

その行が表示されると、エミュレータはメッセージを受信しません。私のコードのどこに問題がありますか?

PS:リスナーを使用して、受信用に別のスレッドを使用してこの問題を回避する方法であることがわかりましたが、上記のコードのどこに問題があるのか​​知りたいですか?どんな助けでも本当にありがたいです^^

4

2 に答える 2

0

エミュレーターで実行している場合は、メッセージの送受信に使用できるwmaコンソールを使用してください。エミュレーターからエミュレーターへそれを行うことはできません。wmaコンソールはユーティリティ->wmaコンソールで利用できます

于 2011-07-05T17:38:47.833 に答える
0

問題が見つかりました...これは、SMSが上記のバージョンのNetbeansでは機能しないためです。Netbeans6.1でのみ機能します...エミュレータに問題があります

于 2011-07-21T06:04:00.470 に答える