只是想知道我是否可以获得一些关于如何处理我的应用程序的建议,目前我有一个名为: MySMSReceiver.java 的类,它可以检查传入的SMS是否具有特定的关键字放入收到的短信。只需检查一个单词即可正常工作"定位"在它上面,但是,我似乎可以弄清楚如何检查传入消息上的3个不同的关键词。
以下是我目前用于 MySMReceiver.java
的代码package com.example.myautosms;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class MySMSReceiver extends BroadcastReceiver {
private String[] keyword = {"Locate", "Lock", "Unlock"};
public void onReceive(Context context, Intent intent) {
Object[] pdus = (Object[])intent.getExtras().get("pdus");
SmsMessage shortMessage = SmsMessage.createFromPdu((byte[])pdus[0]);
if(shortMessage.getDisplayMessageBody().equals(keyword)) {
Toast.makeText(context, keyword.toString(), Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, keyword.to, Toast.LENGTH_LONG).show();
}
}
}
欢迎任何建议! :)
答案 0 :(得分:1)
我假设您需要3个关键字中的任何一个。
只需检查所有3个关键字:
if(shortMessage.getDisplayMessageBody().equals(keyword[0]) ||
shortMessage.getDisplayMessageBody().equals(keyword[1]) ||
shortMessage.getDisplayMessageBody().equals(keyword[2]))
或者,如果每个关键字都有不同的行为:
if(shortMessage.getDisplayMessageBody().equals(keyword[0])) {
} else if (shortMessage.getDisplayMessageBody().equals(keyword[1])) {
} else if (shortMessage.getDisplayMessageBody().equals(keyword[2])) {
} else {
}
此外,请考虑使用不区分大小写的关键字,即使用equalsIgnoreCase
。
答案 1 :(得分:0)
您可以在短信内容中检查多个单词,如下所示:
String body = shortMessage.getDisplayMessageBody().toLowerCase();
boolean isAvailable = false;
for(String word : keyword)
if(body.contains(word.toLowerCase()))
isAvailable = true;
//do whatever with 'isAvailable'