Я пытаюсь разработать тестовое приложение для отправки и получения sms в J2ME с использованием WMA API. У меня есть отдельные потоки для отправки и получения.
Метод запуска потока отправки -
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) {
}
}
Метод запуска получающего потока
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 () и инициализирую отправляющий поток при нажатии команды отправки. У меня проблема в том, что если я использую два эмулятора, обе стороны не могут отправлять сообщения. Один эмулятор может непрерывно отправлять сообщения другому, но когда другой эмулятор пытается отправить сообщение, сообщение не получено.
Когда сообщение получено консолью эмулятора, показывает -
[ИНФОРМАЦИЯ] [sms] ## javacall: отправка SMS ...
когда появляется эта строка, эмулятор не получает никаких сообщений. В чем проблема в моем коде?
PS: Я видел, что это способ использовать слушателя для решения этой проблемы с использованием отдельного потока для приема, но я хочу знать, где проблема в приведенном выше коде? Любая помощь действительно приветствуется ^^