1

ワイヤレスメッセージングAPI(WMA)で動作するアプリケーションをj2meで開発しています。アプリケーションの使命は、2台の携帯電話間でSMSを送受信することです。NetBeansエミュレータでアプリを実行すると正常に動作しますが、Nokia 5200電話で実行すると、携帯電話でこの例外が発生します。

Security java/lang/SecurituException Not allowed to open connection

私のアプリのJADファイルは次のとおりです。

MIDlet-1: Midlet, , hello.Midlet
MIDlet-Jar-Size: 36375
MIDlet-Jar-URL: SinaNetwork.jar
MIDlet-Name: SinaNetwork
MIDlet-Permissions: javax.microedition.io.Connector.sms, javax.wireless.messaging.sms.receive, javax.wireless.messaging.sms.send
MIDlet-Vendor: Vendor
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0

アプリケーションコードも:

Thread receive=new Thread(new Runnable() {
               MessageConnection ms;
            public void run() {
         //       System.out.print("*****************SALAM*******");

                    try {

                        ms= (MessageConnection) Connector.open("sms://:"+7000);
          //              System.out.println("Zoor mizanam Receive konam");
                        Date zaman=new Date();
                        long zamanTemp=zaman.getTime();

                        TextMessage tempmes=(TextMessage) ms.receive();
               //         System.out.print("SMS receive: "+tempmes.getPayloadText());
                        Midlet.messageReceived=true;
                        Midlet.ReceivedThatWeDontKnowIsRandom=tempmes.getPayloadText();
                    }
                    catch(SecurityException eds)
                    {
                        eds.printStackTrace();
                     //   System.out.print("");
                    }
                    catch (IOException ex) {
                        ex.printStackTrace();
                    }




            }
        });
         receive.start();

        Thread sendmesThread=new Thread(new Runnable() {

            public void run() {
                 try {

            MessageConnection mc=(MessageConnection) Connector.open("sms://"+Midlet.smsPhoneNumber+":"+5000); 

            TextMessage tm=(TextMessage) mc.newMessage(MessageConnection.TEXT_MESSAGE);

      //      System.out.print("PNF : "+phoneNumberField.getString());
            tm.setPayloadText(rd+"-"+phoneNumberField.getString());
            mc.send(tm);
         //   System.out.print("message sent from client on port 5000");
            mc.close();

        } 

            catch (IOException ex) {

            ex.printStackTrace();
        }

            }
        });

        sendmesThread.start();

問題は、アプリケーションがSMSを送受信するための接続を開くことができないことだと思いますが、エミュレーターに問題がないため、理由はわかりません。

4

1 に答える 1

1

問題は、使用しようとしているポート (7000 および 5000) にある可能性があります。SMS がユーザーの受信トレイをスキップし、アプリケーションによってのみ処理されるようにする必要があると思いますよね?

それを行う前に、アプリがhttp://www.developer.nokia.com/Community/Wiki/How_to_send_text_SMS_in_Java_MEから以下のコードで簡単な SMS を送信できることを確認してください。

public boolean sendSms(String number, String message){
  boolean result = true;
  try {
    //sets address to send message
    String addr = "sms://"+number;
    // opens connection
    MessageConnection conn = (MessageConnection) Connector.open(addr);
    // prepares text message
    TextMessage msg =
    (TextMessage)conn.newMessage(MessageConnection.TEXT_MESSAGE);
    //set text
    msg.setPayloadText(message);
    // send message
    conn.send(msg);
    conn.close();
  } catch (SecurityException se) {
    // probably the user has not allowed to send sms
    // you may want to handle this differently
  result = false;
  } catch (Exception e) {
    result = false;
  }
  return result;
}

コメント後に更新

セキュリティ例外について: おそらく、電話機は製造元および/または通信事業者/通信事業者からの署名のみを受け入れます。この署名付きバージョンを別の電話で試してください。

于 2012-09-05T18:42:20.853 に答える