在Android中阅读最新收到的短信

时间:2015-12-14 03:38:45

标签: 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";
        }

它正在提取所有消息,因此我需要使用以下哪一个代码来获取最新的短信,(我已删除了以下代码中的&#39;循环)

  

1

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

2

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

问题1:在以上两个代码中,哪一个会给我最新消息,取pdus [0] (1)或pdus [msg.length-1] )(2)

排队2:在我的代码中,我将阅读最新的短信并搜索特定的关键字并执行相应的操作。

当我同时收到2个短信时(说 SMS1&amp; SMS2 )。我的关键字出现在 SMS1 中。

首先, SMS1 接收,并且在一两秒 SMS2 接收后,我怀疑我的代码是否会快速读取SMS1并继续阅读SMS2 收到SMS2时跳过SMS1

如果我提供任何不清楚的地方,请原谅我并发表评论,希望你能解决我的问题。提前致谢。 :)

1 个答案:

答案 0 :(得分: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 - 不会跳过