java.lang.securityException 不允许打开连接 j2me

Posted

技术标签:

【中文标题】java.lang.securityException 不允许打开连接 j2me【英文标题】:java.lang.securityException not allowed to open connection j2me 【发布时间】:2012-12-28 07:54:15 【问题描述】:

在我的 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 上。谢谢

【问题讨论】:

【参考方案1】:

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

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

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

您可以选择适合您的。

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

【讨论】:

嗯,这是因为应用程序内部已经打开了连接,如果处理得当,它工作正常。但是你说的和那件事无关! @Saqib 你能告诉我你是怎么处理的吗,我在消息应用程序中有同样的例外。 我必须明确地捕获这两个异常,我不知道为什么它不适用于 Generic EXCEPTION 事情,但必须进行单独的异常处理,例如 SMS 的 SecurityException 和消息端口的 IOException .希望你能解决!

以上是关于java.lang.securityException 不允许打开连接 j2me的主要内容,如果未能解决你的问题,请参考以下文章