1

在我的 j2me 应用程序中,我收到了上述异常(java.lang.securityException not allowed to open connection)。我的函数流程就像我首先在构造函数中打开套接字以接收消息,然后为了发送 SMS 我在方法主体中打开端口,在我的手机上 MIDlet 请求发送 SMS 的权限,如果我按 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) {
        }
    }
}

我正在使用带有 MIDP 2.0 的 WTK。检查诺基亚设备。首先我想知道可能有关闭MessageConnection端口的问题,但我也试过了,它显示了同样的错误。而关于 SMS 发送,我选择 NO,如果我只是尝试发送 SMS 并选择 NO 多次,它仍然可以正常工作,并且它仍然毫无例外地停留在 midlet 上。谢谢

4

1 回答 1

0

关闭 MessageConnection 没有问题。在某些 s40 和 Symbian 手机(如 X2-02)中,整个会话只会询问一次权限。如果您选择“是”,则在第二次连接时它不会再次询问您。它将直接连接。同样,如果您选择“否”,则在第一次连接时,每次尝试连接时都将不允许连接(将抛出 securityException)。

在某些诺基亚手机上,您可能会看到此选项,

选择应用程序->选项->应用程序访问->通信-> 1. 每次询问 2. 第一次询问 3. 始终允许 4. 不允许。

您可以选择适合您的一种。

如果您根本不希望您的应用程序寻求权限,则需要让您的应用程序由制造商签名。

于 2013-01-24T10:57:48.017 回答