2016-09-10 2 views
0

У меня есть sms-прослушиватель, который читает смс с определенного номера. Он читает смс без каких-либо проблем, но здесь есть ошибка, если тело сообщения очень велико, и оно переходит в 2 сообщения, слушатель обнаруживает только первый и не может понять, что он должен читать два сообщения.android - Как объединить два смс с smslistener

это mycode:

if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { 
      Bundle bundle = intent.getExtras(); 
      settings = context.getSharedPreferences("settings", context.MODE_PRIVATE); 
      SmsMessage[] msgs = null; 
      String msg_from; 
      if (bundle != null) { 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       msgs = new SmsMessage[pdus.length]; 
       if (msgs != null) { 
        for (int i = 0; i < msgs.length; i++) { 
         msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
         msg_from = msgs[i].getOriginatingAddress(); 

}}}

Как я могу решить эту проблему

+0

Ваш Приемник только когда-либо будет получать одно сообщение за раз, независимо от того, сколько его частей. Вам нужно объединить тела сообщений в цикле 'for', чтобы получить одно, полное сообщение. –

ответ

1

попробовать этот

Bundle bundle = intent.getExtras(); 
messages = (Object[]) bundle.get("pdus"); 
smsMessage = new SmsMessage[messages.length]; 
for (int n = 0; n < messages.length; n++) { 
    smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
} 

for (int i = 0; i < smsMessage.length; i++) 
    mainsms += smsMessage[i].getMessageBody(); 

И ваш полный текст SMS является mainsms

Смежные вопросы