2016-10-14 46 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); 
    }