2011-04-11 61 views
4

我正在尝试制作一个J2ME应用程序来发送和接收文本消息。我完成了它的发送部分,但我无法收到任何消息。使用J2ME接收文本消息

以下是我为了接收短信而尝试的;

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功能。我所做的是在两个不同的手机上安装和启动应用程序,从一个手机发送消息到另一个手机,并在另一个手机中接收。

消息成功发送和接收,但不在应用程序中。邮件将发送到其他手机的收件箱。

我该怎么办?

+0

你如何发送短信?你是否从另一个MIDlet发送它在端口号50001上接收? – funkybro 2011-04-12 08:01:05

+1

@funkybro:是的,我是....这里我已经更新了发送消息的逻辑帖子... – 2011-04-12 08:26:06

+0

我认为这个线程包含解决方案:http://stackoverflow.com/questions/4932972/sms-在手机断开连接时进入收件箱 – ruben 2012-01-25 07:02:17

回答

1

尝试5000端口号。

一些手机有这个端口监听短信

0

尝试用tmsg.setAddress("sms://" + number + ":50001");更换tmsg.setAddress("sms://" + number);

+0

(收到的消息)在NetBeans中的模拟器中工作,但当我的应用程序在真实移动设备上运行并在接收模式下设置时,无法工作。可能是什么原因 – 2011-04-13 16:39:19

0

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