如何拦截J2ME中的SMS

时间:2013-09-02 13:36:13

标签: java java-me

早上好,我有以下代码:

int numero = 22492;
String  PhnNoStr = String.valueOf (numero);
String transaction = WriteText(tipoTransacao);
String SmsStr = "ECART" + "" + transaction + idToken;
System.out.println ("Message:" + smsStr);
MessageConnection msgCon = null;
msgCon = (MessageConnection) Connector.open ("sms :/ /" + + phnNoStr ": 500");
TextMessage TxtMsg = (TextMessage) msgCon.newMessage (MessageConnection.TEXT_MESSAGE);
txtMsg.setPayloadText (smsStr);
msgCon.send (TxtMsg);

所以我默认发送该消息,它会返回一条消息。我可以发送和接收此消息,但是当我收到此消息时我需要拦截,有人知道我该怎么做吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用PushRegistry在收到短信并且midlet未运行时启动您的midlet。

PushRegistry.registerConnection("sms://:500", "your_package.Your_MIDlet", "*");

要处理传入的短信,您需要打开连接并侦听传入的消息,例如:

class SMSHandler implements MessageListener, Runnable {
    public void start() {
        ...
        connection = (MessageConnection) Connector.open("sms://:500", Connector.READ);
        connection.setMessageListener(this);
    }

    public void notifyIncomingMessage(MessageConnection messageConnection) {
        (new Thread(this)).start();
    }

    public void run() {
        final Message message = connection.receive();
        ...
    }

(在另一个线程中处理消息的原因是阻塞I / O不应该在系统回调中完成 - 至少WTK模拟器会打印警告,而在某些手机上midlet将会冻结)。