SMS的字符串消息

时间:2013-08-12 11:28:11

标签: android string sms message

我正在学习如何在Android上开发应用程序。 我有一个按钮onClick,它应该读取我的短信并检查每条短信的正文,如果一条短信包含“WORD”然后做点什么。

应该用这个来实现,对吧?

 String body = sms.getMessageBody().toString();



                while (body.contains("WORD"))
                   DO SOMETHING

提前致谢。

编辑

有没有办法在没有按下按钮的情况下执行此操作,例如每小时一次?

3 个答案:

答案 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安排某些任务在将来的某个时间点运行

例如,请参阅https://stackoverflow.com/a/8801990/1051147