1

私の j2me アプリケーションでは、上記の例外 ( java.lang.securityException not allowed to open connection) を受け取ります。私の関数の流れは、最初にコンストラクターでメッセージを受信するためにソケットを開き、次に SMS を送信するためにメソッド本体でポートを開きます。電話で MIDlet が SMS を送信する許可を求めます。NO を押すと、セキュリティ例外が表示されます。 SMS 送信は拒否されていません。問題ありません。しかし、同じ MIDlet にいて、このアクションを 2 回目に実行すると、コンストラクターで受信ポートを開くときに例外が発生しjava.lang.securityException not allowed to open connectionます。現時点では、SMS の 2 回目の送信を求める許可はまだ見られません。コンストラクターと SMS 送信のコードは次のとおりです。

//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 を使用しています。Nokia デバイスを確認しています。まず、ポートを閉じる問題があるのではないかと思いますがMessageConnection、それも試してみましたが、同じエラーが表示されます。SMS 送信については [いいえ] を選択しますが、SMS を送信して [いいえ] を選択するだけで、何度でも例外なく midlet にとどまると問題なく動作します。ありがとう

4

1 に答える 1

0

MessageConnection を閉じても問題はありません。一部の s40 および Symbian 携帯電話 (X2-02 など) では、1 つのセッション全体に対して 1 回だけ許可が求められます。「はい」を選択すると、2 回目の接続時に再確認することはありません。直結になります。同様に、「いいえ」を選択すると、最初の接続時に、接続を試行するたびに接続が許可されません (securityException がスローされます)。

一部の Nokia スマートフォンでは、このオプションが表示される場合があります。

アプリケーションを選択 -> オプション -> アプリケーション アクセス -> 通信 -> 1. 毎回確認する 2. 初めて確認する 3. 常に許可する 4. 許可しない.

ご自身にあったものをお選びいただけます。

アプリケーションがパーミッションをまったく求めたくない場合は、アプリに製造元による署名が必要です。

于 2013-01-24T10:57:48.017 に答える