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