在Android中检查多个关键字的短信

时间:2014-08-12 15:13:17

标签: java android sms smsmanager

只是想知道我是否可以获得一些关于如何处理我的应用程序的建议,目前我有一个名为: 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();
        }
    }
}

欢迎任何建议! :)

2 个答案:

答案 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'