如何在Android上分析传入的短信?

我怎样才能在Android的代码,使我的应用程序可以分析一个传入的短信,也许阻止它或做一些事情(也许移动到一个不同的短信文件夹)之前,SMS实际上引发了一个通知告诉用户一个新的短信? 我会瞄准Android 2.1及以上。

我想分析传入的用户指定的垃圾邮件的短信,如果发现将要删除/标记为已读/将邮件移动到不同的文件夹。

Solutions Collecting From Web of "如何在Android上分析传入的短信?"

我使用这个代码作为BroadcastReceiver:

public void onReceive(Context context, Intent intent) { //this stops notifications to others this.abortBroadcast(); //---get the SMS message passed in--- Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String str = ""; if (bundle != null) { //---retrieve the SMS message received--- Object[] pdus = (Object[]) bundle.get("pdus"); msgs = new SmsMessage[pdus.length]; for (int i=0; i<msgs.length; i++){ msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); str += "SMS from " + msgs[i].getOriginatingAddress(); from = msgs[i].getOriginatingAddress(); str += " :"; str += msgs[i].getMessageBody().toString(); msg = msgs[i].getMessageBody().toString(); str += "\n"; } if(checksomething){ //make your actions //and no alert notification and sms not in inbox } else{ //continue the normal process of sms and will get alert and reaches inbox this.clearAbortBroadcast(); } } 

请记住将其添加到清单中,并为广播或短信添加最高优先级(100)将先到达收件箱并获取警报通知。

  <receiver android:name=".SmsReceiver"> <intent-filter android:priority="100"> <action android:name="android.provider.Telephony.SMS_RECEIVED"></action> </intent-filter> </receiver> 

希望它可以帮助你。

那么你可以陷入传入的短信,但我认为你将无法阻止通知…..
如果你想删除短信这是一个线程,可以帮助….
如何以编程方式从Android的收件箱中删除短信?

此代码适用于我的2.3.3设备。 HTC MyTouch 4g幻灯片。 abortBroadcast禁止状态栏上的notificationsound +通知+不允许SMS转到收件箱。 有些用户提到,它不能在真实的设备上工作,只能在仿真器上工作,但情况并非总是如此。 如果优先级是100,那么在这个特定的设备上代码按预期工作。