2016-11-21 76 views
0

如何處理廣播接收機中的多部分短信並將其存儲在一個字符串中,然後再對其進行開始操作,就像我想將多部分短信存儲在一個字符串中然後用不同的分隔符分割它,然後從中獲得狀態代碼,我有250個字符的1個短信。我試着用下面的代碼,但沒有工作,我在模擬器上測試它,好心幫助我,我也把代碼接收。如何在廣播接收機中處理超過160個字符(如250個字符)的短信

String mySmsText ; 
     public void onReceive(Context context, Intent intent) 
     { 
      Bundle bundle = intent.getExtras(); 
      if (bundle != null) { 
      Object[] pdus = (Object[])bundle.get("pdus"); 
      final SmsMessage[] messages = new SmsMessage[pdus.length]; 
      for (int i = 0; i < pdus.length; i++) { 
       messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
       } 
       StringBuffer content = new StringBuffer(); 
        if (messages.length > 0) { 
        for (int i = 0; i < messages.length; i++) { 
         content.append(messages[i].getMessageBody()); 
         } 
        } 
        mySmsText = content.toString(); 
        }  
      instance.t1.setText(mySmsText); 
     } 
    } 

我試圖打印味精,但它顯示不好的字符也覆蓋了舊的。

對不起,我的代碼沒有問題,問題只出現在我測試過的模擬器上。當我測試它真實的設備也工作得很好,我很抱歉......

+0

我不知道的你有什麼問題。它是在接收時重新創建mutlipart SMS?目前的結果是什麼?我在家裏有這樣的代碼,我會盡量記住在幾個小時內檢查。 – AxelH

+0

我試圖收到有250個字符的短信,但是當我收到短信時,它會分裂並在我的文本視圖中顯示短信。我想加入所有的信息,然後只顯示1個字符串 –

+0

在一個意圖中收到長的SMS,這是你的'SmsMessage []消息'的內容。看到[這](http://stackoverflow.com/questions/7469881/broadcastreceiver-for-multipart-sms) – AxelH

回答

0

最後我做到了感謝名單先生AxelH你的答案

DataBaseHandler db; 
     String mySmsText; 
     public void onReceive(Context context, Intent intent) { 
      db = new DataBaseHandler(context); 
      Bundle bundle = intent.getExtras(); 
      if (bundle != null) { 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       final SmsMessage[] messages = new SmsMessage[pdus.length]; 
       for (int i = 0; i < pdus.length; i++) 
        messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       if (messages.length > 0) { 
        StringBuffer content = new StringBuffer(); 
        for (SmsMessage sms : messages) 
         content.append(sms.getDisplayMessageBody()); 
        mySmsText = content.toString(); 
       } 
       db.update_sys_pwd(mySmsText); 
       instance.t1.setText(mySmsText); 
      } 
     } 
+0

至少,解釋你做了什麼,'我看到你使用getDisplayMessageBody()',添加一些關於原因的信息。如果有人在這裏遇到同樣的問題,這可能會有用。 – AxelH

+0

問題是與模擬器,我不存儲整個短信。和sms.getDisplayMessageBody()方法返回sms正文。其中存儲在StringBuffer對象之後是顯示文本,我測試它在真實的設備。 –

+0

用更多信息編輯你的答案,不要告訴我;) – AxelH

相關問題