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);

上面的代码是连续监听传入的短信,还是只监听 1 条短信?如果它只收听 1 条短信,请您提供代码以连续收听短信。

4

1 回答 1

1

您的代码只读取一条短信。如果你需要阅读每条发送的短信,你需要一个像官方知识库文章中这样的循环:

        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 回答