Just wondering if I could get some advice about how next to handle my App, currently I have class called: MySMSReceiver.java, it can check if an incoming SMS has a particular keyword that had been placed in the incoming SMS. It works fine with just checking the one word "Locate" on it's own but, I can seem to figure out how to check say 3 different Keywords on an incoming message.
Below is the code that I'm currently using for the 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();
}
}
}
Any suggestions would be welcomed! :)
I'm assuming you require either of the 3 keywords.
Just check all 3 keywords :
if(shortMessage.getDisplayMessageBody().equals(keyword[0]) ||
shortMessage.getDisplayMessageBody().equals(keyword[1]) ||
shortMessage.getDisplayMessageBody().equals(keyword[2]))
Or if each keyword has different behavior :
if(shortMessage.getDisplayMessageBody().equals(keyword[0])) {
} else if (shortMessage.getDisplayMessageBody().equals(keyword[1])) {
} else if (shortMessage.getDisplayMessageBody().equals(keyword[2])) {
} else {
}
In addition, consider using case insensitive keywords, i.e. use equalsIgnoreCase
.