2015-12-14 2 views
1

Я видел дубликаты этого вопроса. Во всех вопросах они указали, чтобы прочитать все смс из папки «Входящие».Чтение последних полученных sms в Android

То, что я хочу, это просто прочитать последние полученные sms.

Object[] pdus = (Object[]) bundle.get("pdus"); 
msgs = new SmsMessage[pdus.length]; 
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"; 
     } 

Он извлекает все сообщения, так который один из приведенных ниже кодов делать мне нужно использовать, чтобы принести последние смс (я удалил «для» петли в поле ниже коде)

msgs[0] = SmsMessage.createFromPdu((byte[]) pdus[0]); 
msgs[0] = SmsMessage.createFromPdu((byte[]) pdus[msgs.length-1]); 

Вопрос 1: В этих двух кодов, один даст мне последнее сообщение, кокетливыми БРП [0] (1) или БРП [msg.length-1]) (2)

Quetion 2: В моем коде я собираюсь прочитать последние sms и найти конкретное ключевое слово и выполнить соответствующее действие.

Когда я получу 2 см в одно и то же время (скажем SMS1 & SMS2). Мой ключевое слово есть в SMS1.

Во-первых, SMS1 приема и после того, как один или два вторых SMS2 получает, таким образом, что мои сомнения, является ли мой код будет читать SMS1 быстрее и двигаться читать SMS2 или он будет пропустить SMS1 когда SMS2 получил?

Простите меня и сделайте комментарий, если я предоставил что-то непонятное, надеюсь, вы сможете решить мою проблему. Заранее спасибо. :)

ответ

2

Ваш вопрос странный.

Код, который вы указали вначале, действительно получит только одно сообщение.

Object[] pdus = (Object[]) bundle.get("pdus"); 
msgs = new SmsMessage[pdus.length]; 
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"; 
     } 

Вопрос 1 - Вы должны использовать код выше. Он получит только одно сообщение, а не все сообщения в папке «Входящие».

Вопрос 2 - Он не будет пропускать

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