如何使用pushregistry读取j2me midlet中收到的消息?

时间:2012-09-26 13:20:36

标签: java java-me sms midp

我不知道如何使用J2ME midlet在移动设备中阅读收到的消息。实际上我一直在使用短信网关将消息发送到其他手机。短信网关回复同一个移动设备,但我想阅读直接在设备上回复消息,而不是检查收件箱。如果使用PushRegistry概念在j2me midlet中执行此操作。请为我提供好主意或示例代码...提前感谢。

1 个答案:

答案 0 :(得分:3)

您应该使用PushRegistry机制。为此,您应在.jad文件中标记您的应用程序对传入的SMS做出反应并标记SMS权限。 将这些属性放到JAD文件中:

MIDlet-Push-1: sms://:10214,hu.bute.daai.example.sms.MidletSMSPushDemo,*
MIDlet-Permissions: javax.microedition.io.PushRegistry, javax.microedition.io.Connector.sms, javax.wireless.messaging.sms.receive

请注意,您应使用自己的软件包和MIDlet名称。除此之外,您应该使用与JAD中定义的SMS发送相同的端口(示例中为10214)。

在你的MIDlet启动之后,你应该拨打你的短信收件人代码来获取短信:

public class MidletJSMSProxy extends MIDlet {
    public void startApp() {
        initalize();
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void initSMSReceive() {
        new Thread() {
            public void run() {
                MessageConnection conn = null;
                try {
                    String url = "sms://:10214";
                    MessageConnection conn = (MessageConnection) Connector.open(url);
                     TextMessage message = (TextMessage)conn.receive();
                    System.out.println("SMS: "+message.getAddress()+" - "+message.getPayloadText());
                }
                catch(Exception e){
                    e.printStackTrace();
                } finally {
                    try {
                        if (conn != null)
                            conn.close();
                    } catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }.start();
    }
}

更多信息: http://www.developer.nokia.com/Community/Wiki/How_to_launch_a_MIDlet_remotely_via_SMS_or_locally_via_an_Alarm_with_PushRegistry_in_Java_ME