我正在学习如何在Android上开发应用程序。 我有一个按钮onClick,它应该读取我的短信并检查每条短信的正文,如果一条短信包含“WORD”然后做点什么。
应该用这个来实现,对吧?
String body = sms.getMessageBody().toString();
while (body.contains("WORD"))
DO SOMETHING
提前致谢。
编辑
有没有办法在没有按下按钮的情况下执行此操作,例如每小时一次?
答案 0 :(得分:1)
如果您想要使用新消息进行检查,则需要创建BroadcastReceiver
AndroidManifest.xml声明:
<receiver android:name=".MySMSReceiver ">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
BroadcastReceiver:
public class MySMSReceiver extends BroadcastReceiver {
@Override
public void onReceiver(Context context, Intent intent) {
Object[] pdus=(Object[])intent.getExtras().get("pdus");
String sender="";
StringBuilder text=new StringBuilder();
// get sender from first PDU
SmsMessage shortMessage=SmsMessage.createFromPdu((byte[]) pdus[0]);
sender=shortMessage.getOriginatingAddress();
for (int i=0;i<pdus.length;i++) {
shortMessage=SmsMessage.createFromPdu((byte[]) pdus[i]);
text.append(shortMessage.getDisplayMessageBody());
}
while (text.contains("WORD")) {
// DO SOMETHING
}
Log.d("SMSReceiver","SMS message sender: " + shortMessage.getOriginatingAddress());
Log.d("SMSReceiver","SMS message text: " + shortMessage.getDisplayMessageBody());
}
}
答案 1 :(得分:1)
而不是在你需要使用if语句时......
if (body.contains("WORD"){
DO SOMETHING
}
答案 2 :(得分:0)
您可以使用AlarmManager安排某些任务在将来的某个时间点运行