2011-04-11 50 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();方法來讀取消息並做任何你想做的事情。