阅读 Android 中最新收到的短信
Reading latest received sms in Android
我看到了这个问题的重复。在所有的问题中,他们都指定从收件箱中读取所有短信。
我想要的只是阅读最近收到的短信。
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";
}
它正在提取所有消息,所以我需要使用下面的哪一个代码来获取最新的短信,(我删除了下面代码中的 'for' 循环)
1
msgs[0] = SmsMessage.createFromPdu((byte[]) pdus[0]);
2
msgs[0] = SmsMessage.createFromPdu((byte[]) pdus[msgs.length-1]);
问题一: 上面两段代码,哪一段会给我最新消息,获取pdus[0] (1) 或者pdus[msg.length-1] ) (2)
问题 2: 在我的代码中,我将阅读最新的短信并搜索特定的关键字并执行相应的操作。
当我同时收到 2 条短信时(说 SMS1 和 SMS2)。我的 关键字 出现在 SMS1 中。
首先,SMS1 收到,一两秒后 SMS2 收到,所以我怀疑我的代码是否 将快速阅读 SMS1 并移动到阅读 SMS2 或当收到 SMS2 时它将跳过 SMS1 ?
如果我有任何不清楚的地方,请原谅我并发表评论,希望你能解决我的问题。提前致谢。 :)
你的问题很奇怪。
您首先提供的代码实际上只会提取一条消息。
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";
}
Question 1 - You must use the above code . It will fetch only one message not all the messages in inbox.
Question 2 - It will not skip
我看到了这个问题的重复。在所有的问题中,他们都指定从收件箱中读取所有短信。
我想要的只是阅读最近收到的短信。
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";
}
它正在提取所有消息,所以我需要使用下面的哪一个代码来获取最新的短信,(我删除了下面代码中的 'for' 循环)
1
msgs[0] = SmsMessage.createFromPdu((byte[]) pdus[0]);
2
msgs[0] = SmsMessage.createFromPdu((byte[]) pdus[msgs.length-1]);
问题一: 上面两段代码,哪一段会给我最新消息,获取pdus[0] (1) 或者pdus[msg.length-1] ) (2)
问题 2: 在我的代码中,我将阅读最新的短信并搜索特定的关键字并执行相应的操作。
当我同时收到 2 条短信时(说 SMS1 和 SMS2)。我的 关键字 出现在 SMS1 中。
首先,SMS1 收到,一两秒后 SMS2 收到,所以我怀疑我的代码是否 将快速阅读 SMS1 并移动到阅读 SMS2 或当收到 SMS2 时它将跳过 SMS1 ?
如果我有任何不清楚的地方,请原谅我并发表评论,希望你能解决我的问题。提前致谢。 :)
你的问题很奇怪。
您首先提供的代码实际上只会提取一条消息。
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";
}
Question 1 - You must use the above code . It will fetch only one message not all the messages in inbox.
Question 2 - It will not skip