【问题标题】:java.lang.securityException not allowed to open connection j2mejava.lang.securityException 不允许打开连接 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 上。谢谢

【问题讨论】:

    标签: exception-handling java-me midlet java-wireless-toolkit


    【解决方案1】:

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

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

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

    您可以选择适合您的。

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

    【讨论】:

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