在我的j2me应用程序中,我收到上述异常(java.lang.securityException not allowed to open connection
)。我的功能流程就像首先我在构造函数中打开接收消息的套接字然后发送短信我在方法体中打开端口,在我的手机MIDlet上要求发送短信的权限,如果我按NO它显示安全异常,短信发送未被拒绝,没关系。但是当在同一个MIDlet中并且第二次执行此操作时,它会在构造函数中打开接收端口java.lang.securityException not allowed to open connection
时给出异常。此时我还没有看到任何要求第二次发送短信的许可。我的构造函数和短信发送的代码如下:
//Constructor
public ServerContactRetriever(MainMidlet parent, Language lang) {
try {
this.language = lang;
this.parent = parent;
recvCon = (MessageConnection) Connector.open(RECV_URL); //open receiving port
recvCon.setMessageListener(this);
} catch (Exception ex) {
parent.dispErrorMessage(language.access_denied_disp);
parent.alertShow(language.access_denied_alert);
}
}
//METHOD
//Request restore contacts from server
private void sendRestoreRequest() {
try {
MessageConnection msgCon = (MessageConnection) Connector.open(SEND_URL);
TextMessage msg = (TextMessage) msgCon.newMessage(MessageConnection.TEXT_MESSAGE);
msg.setAddress(SEND_URL);
msg.setPayloadText("set payload here");
msgCon.send(msg);
msgCon.close();
} catch (Exception ex) {
try {
parent.alertShow(language.sms_error_alert);
parent.dispErrorMessage(language.sms_error_disp);
recvCon.close();
} catch (Exception ex1) {
}
}
}
我正在使用WTK和MIDP 2.0。
检查诺基亚设备。
首先我想知道可能存在关闭MessageConnection
端口的问题,但我也尝试了它并且它显示了相同的错误。然而关于短信发送和我选择否,如果我只是尝试发送短信并且根据我的需要多次选择“否”它可以正常工作,并且它仍然保留在midlet上,没有任何异常。感谢
答案 0 :(得分:0)
关闭MessageConnection没有问题。在某些s40和Symbian手机(如X2-02)中,只有一次会话才能获得一次整个会话的权限。如果您选择“是”,它会在第二次连接时再次询问您。它将直接连接。同样,如果在第一次连接时选择“否”,则每次连接尝试都不允许连接(将抛出securityException)。
在某些诺基亚手机上,您可能会看到此选项,
选择应用程序 - >选项 - >应用程序访问 - >通信 - > 1.问每次 2.第一次询问 3.始终允许 4.不允许。
您可以选择适合您的那个。
如果您不希望您的应用程序完全寻求权限,则需要让您的应用程序由制造商签名。