1

私はコードを持っています

            DatagramConnection _dc =(DatagramConnection)Connector.open("sms://");         
            Datagram d = _dc.newDatagram(_dc.getMaximumLength());               
            _dc.receive(d); //Receive the sms
            byte[] bytes = d.getData();
            String address = d.getAddress(); //The address of the sms is put on a string.
            String msg = new String(bytes);

上記のコードは着信 SMS を継続的にリッスンしますか、それとも 1 つの SMS だけをリッスンしますか? 1 つの SMS をリッスンするだけの場合は、SMS を継続的にリッスンするためのコードを教えてください。

4

1 に答える 1

1

コードは単一の SMS のみを読み取ります。配信されたすべての SMS を読む必要がある場合は、公式のナレッジ ベース記事に掲載されている次のようなループが必要です。

        DatagramConnection _dc = (DatagramConnection)Connector.open("sms://");
        for(;;) {
               Datagram d = _dc.newDatagram(_dc.getMaximumLength());
               _dc.receive(d);
               byte[] bytes = d.getData();
               String address = d.getAddress();
               String msg = new String(bytes);
               System.out.println( "Received SMS text from " + address + " : " + msg);
         }

ここで疑問が生じます: BB OS は SMS をリッスンしているアプリに順番に配信していますか? もしそうなら (私はそう思いますが、そこまでテストしたことはありません)、メッセージをできるだけ早くコンシューマーに転送するだけです (そうしないと、SMS 処理中に接続リスナー スレッドを占有することになります)。

于 2012-07-03T12:42:20.183 に答える