SecurityException в j2me WMA приложении для отправки / получения SMS
Я разрабатываю приложение в j2me, которое работает с Wireless Messaging API (WMA). Миссия приложения - отправка и получение SMS между двумя мобильными телефонами. Когда я запускаю приложение в эмуляторе NetBeans, оно работает нормально, но когда я запускаю его на телефоне Nokia 5200, я делаю это исключение на мобильном телефоне:
Security java/lang/SecurituException Not allowed to open connection
Файл JAD моего приложения:
MIDlet-1: Midlet, , hello.Midlet
MIDlet-Jar-Size: 36375
MIDlet-Jar-URL: SinaNetwork.jar
MIDlet-Name: SinaNetwork
MIDlet-Permissions: javax.microedition.io.Connector.sms, javax.wireless.messaging.sms.receive, javax.wireless.messaging.sms.send
MIDlet-Vendor: Vendor
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0
Код приложения также:
Thread receive=new Thread(new Runnable() {
MessageConnection ms;
public void run() {
// System.out.print("*****************SALAM*******");
try {
ms= (MessageConnection) Connector.open("sms://:"+7000);
// System.out.println("Zoor mizanam Receive konam");
Date zaman=new Date();
long zamanTemp=zaman.getTime();
TextMessage tempmes=(TextMessage) ms.receive();
// System.out.print("SMS receive: "+tempmes.getPayloadText());
Midlet.messageReceived=true;
Midlet.ReceivedThatWeDontKnowIsRandom=tempmes.getPayloadText();
}
catch(SecurityException eds)
{
eds.printStackTrace();
// System.out.print("");
}
catch (IOException ex) {
ex.printStackTrace();
}
}
});
receive.start();
Thread sendmesThread=new Thread(new Runnable() {
public void run() {
try {
MessageConnection mc=(MessageConnection) Connector.open("sms://"+Midlet.smsPhoneNumber+":"+5000);
TextMessage tm=(TextMessage) mc.newMessage(MessageConnection.TEXT_MESSAGE);
// System.out.print("PNF : "+phoneNumberField.getString());
tm.setPayloadText(rd+"-"+phoneNumberField.getString());
mc.send(tm);
// System.out.print("message sent from client on port 5000");
mc.close();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
});
sendmesThread.start();
Я думаю, что проблема в том, что приложение не может открыть соединение для отправки или получения SMS, но я не знаю почему, потому что у меня нет проблем в эмуляторе.
1 ответ
Ваша проблема может быть связана с портами, которые вы пытаетесь использовать: 7000 и 5000. Я считаю, что вы хотите, чтобы SMS пропускало входящие сообщения пользователей и обрабатывалось только приложением, верно?
Перед тем, как сделать это, убедитесь, что ваше приложение может отправить простое SMS-сообщение с приведенным ниже кодом с http://www.developer.nokia.com/Community/Wiki/How_to_send_text_SMS_in_Java_ME
public boolean sendSms(String number, String message){
boolean result = true;
try {
//sets address to send message
String addr = "sms://"+number;
// opens connection
MessageConnection conn = (MessageConnection) Connector.open(addr);
// prepares text message
TextMessage msg =
(TextMessage)conn.newMessage(MessageConnection.TEXT_MESSAGE);
//set text
msg.setPayloadText(message);
// send message
conn.send(msg);
conn.close();
} catch (SecurityException se) {
// probably the user has not allowed to send sms
// you may want to handle this differently
result = false;
} catch (Exception e) {
result = false;
}
return result;
}
Обновление после комментариев
Об исключении безопасности: возможно, телефон принимает подписи только от производителя и / или оператора / оператора связи. Попробуйте эту подписанную версию на разных телефонах.