我正在尝试使用 WMA API 在 J2ME 中开发一个短信发送和接收测试应用程序。我有单独的线程用于发送和接收。
发送线程的运行方法 -
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() 中初始化接收线程,并在按下发送命令时初始化发送线程。我遇到的问题是,如果我使用两个模拟器,双方都无法发送消息。一个模拟器可以连续向另一个模拟器发送消息,但是当另一个模拟器尝试发送消息时,消息没有收到。
当模拟器控制台收到消息时显示 -
[INFO] [sms] ## javacall: 短信发送...
当该行出现时,模拟器不会收到任何消息。我的代码中的问题在哪里?
PS:我看到他们是一种使用监听器来解决这个问题的方法,使用单独的线程进行接收,但我想知道上面代码中的问题出在哪里?非常感谢任何帮助^^