2016-10-14 44 views
-1

我正在開發一個android應用程序,它在使用廣播接收器時獲取SMS。下面是代碼:Android收件箱短信在不同部分接收

if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { Bundle bundle = intent.getExtras(); SmsMessage[] msgs; if (bundle != null) { //---retrieve the SMS message received--- try { Object[] pdus = (Object[]) bundle.get("pdus"); msgs = new SmsMessage[pdus.length]; for(int i=0; i<msgs.length; i++) { msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); String address = msgs[i].getOriginatingAddress(); String body = msgs[i].getMessageBody(); } } catch(Exception e) { Log.d("Exception caught",e.getMessage()); } } }

問題是,我收到幾條短信有兩個或三個部分。我不知道如何加入這些消息部分。如何檢測到郵件的第一部分需要與下一部分郵件相結合。

第一部分:Your airtel mobile ********** online recharge txn ID ************ o

第二部分:f Rs *** has been initiated. Please keep the txn id for future refe

第三部分:rence.

回答

1

您需要添加郵件正文(件)。 改變這種

  String body = msgs[i].getMessageBody(); 

  String body += msgs[i].getMessageBody(); 
0

的問題是你的循環中嘗試了這一點,你應該罰款

Bundle bundle = intent.getExtras(); 

    SmsMessage[] msgs = null; 

    String str = ""; 

    if (bundle != null) { 
     // Retrieve the SMS Messages received 
     Object[] pdus = (Object[]) bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length]; 

     // For every SMS message received 
     for (int i=0; i < msgs.length; i++) { 
      // Convert Object array 
      msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
      // Sender's phone number 
      str += "SMS from " + msgs[i].getOriginatingAddress() + " : "; 
      // Fetch the text message 
      str += msgs[i].getMessageBody().toString();    
      str += "\n"; 
     } 

     // Display the entire SMS Message 
     Log.d(TAG, str); 
    }