使用J2ME接收短信

时间:2011-04-11 19:30:13

标签: java java-me sms wma

我正在尝试将J2ME应用程序发送到SEND和RECEIVE文本消息。我完成了它的发送部分,但我无法收到任何消息..

以下是我尝试接收短信的内容;

    try {
        MessageConnection conn = (MessageConnection) Connector.open("sms://:50001");
        conn.setMessageListener(new MessageListener() {
            public void notifyIncomingMessage(MessageConnection conn) {
                try {
                    Message msg;
                    msg = conn.receive();
                    if (msg instanceof TextMessage) {
                        TextMessage tmsg = (TextMessage) msg;
                        stringItem.setText("Msg: " + tmsg.getPayloadText());
                        System.out.println(tmsg.getPayloadText());
                    }
                    // else if(msg instanceof BinaryMessage) {
                    // .....
                    // } else {
                    // ......
                    // }
                } catch (IOException ex) {
                    ex.printStackTrace();
                } finally {
                    try {
                        conn.close();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                }
            }
        });
    } catch (Exception e1) {
        System.out.println(e1);
    }

但这不起作用......也没有出现任何错误......我做错了什么?...我们可以使用J2ME接收消息吗?

发送消息的代码:(更新)

MessageConnection conn = (MessageConnection) Connector.open("sms://:50001");
TextMessage tmsg = (TextMessage) conn.newMessage(MessageConnection.TEXT_MESSAGE);
tmsg.setPayloadText(message);
tmsg.setAddress("sms://" + number);
conn.send();

我有两种不同形式的sendreceive函数。我所做的是在两个不同的手机中安装和启动应用程序,从一个手机向另一个手机发送消息,在另一个手机中接收消息。

成功发送和接收消息,但不在应用程序中。该消息将转到另一部手机的收件箱中。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

尝试5000端口号。

有些手机将此端口作为短信听众

答案 1 :(得分:0)

尝试将tmsg.setAddress("sms://" + number);替换为tmsg.setAddress("sms://" + number + ":50001");

答案 2 :(得分:0)

您可以做的最好的事情是在收到消息时启动一个线程,并确保在收听消息通知之前打开您的端口。然后在线程内部执行conn.receive();方法来阅读消息并做任何你想做的事情。