我看到了这个问题的重复。在所有问题中,他们指定从收件箱中读取所有短信。
我想要的只是阅读最新收到的短信。
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 ?
如果我提供任何不清楚的地方,请原谅我并发表评论,希望你能解决我的问题。提前致谢。 :)
答案 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 - 不会跳过