android 是可以拦截短信的
package com.tigertian.sms;
import android.content.BroadcastReceiver;


import android.content.Context;


import android.content.Intent;


import android.os.Bundle;


import android.telephony.SmsMessage;


public class SMSReceiver extends BroadcastReceiver {

@Override


public void onReceive(Context context, Intent intent) {


// TODO Auto-generated method stub


System.out.println("SMSReceiver, isOrderedBroadcast()="+ isOrderedBroadcast());
Bundle bundle = intent.getExtras();

Object messages[] = (Object[]) bundle.get("pdus");


SmsMessage smsMessage[] = new SmsMessage[messages.length];


for (int n = 0; n < messages.length; n++) {


smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);

if(smsMessage[n].getMessageBody().contains("hahaha")){

this.abortBroadcast();

}

System.out.println(smsMessage[n].getOriginatingAddress()+" "+smsMessage[n].getMessageBody()+" "+smsMessage[n].getIndexOnIcc());

}

}
}
复制代码
<receiver android:name=".SMSReceiver">


<intent-filter android:priority="10000">


<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>


<category android:name="android.intent.category.DEFAULT" />


</intent-filter>


</receiver>
复制代码
上面的代码是一个消息监听,监听接收短信的消息。我们可以从控制台打印信息里面看到,他是一个OrderedBroadcast,根据这一点我们就可以对短信机制进行拦截。如何拦截呢?


首先要声明一个消息监听器,同时根据上面的配置文件需要在AndroidManifest.xml中配置好,注意它的优先级是10000,这一点很关键,因为OrderedBroadcast是根据优先级来传递消息的,优先级越高越先获取到消息,待处理完后才会传递给下一个监听器,如果当前监听器退出广播,那么后面的所有监听器都将无法收到消息。


其次我们需要实现onReceive方法,根据上面的代码,我们可以从bundle中拿到短信内容并还原成SmsMessage,这样我们可以根据特定条件来判断哪些是需要我们拦截并且不要让用户知道的,哪些是我们可以放行的。需要我们拦截的短信,我们可以在收到后直接abortBroadcast()(上面的代码中是判断当短信内容包含hahaha的时候直接拦截),这样系统收件箱将无法接收到该条短信,继而也就不会有notification去通知用户。


至此,应用编写好之后,短信拦截功能就完成了,当然基于此还可以做一些其他功能,这方面就看需求了。注意,优先级相同,则根据包名依次传递广播。


想删除收件箱中已存在的短信,请参考Android源码SmsProvider类,可以在你的应用中使用ContentProvider机制进行操作。

更多相关文章

  1. android checkBox 的选中和取消选中
  2. Android(安卓)源码阅读之MMS
  3. android监听短信并判断是否未读
  4. OnclickListener与View.OnclickListener
  5. android群发短信时判断短信是否发送成功
  6. Android发送短信
  7. android接收和发送短信的xml配置
  8. Android上下与左右滑动事件处理
  9. 短信拦截

随机推荐

  1. Activity的启动
  2. Android 学习之 SQLite操作
  3. Ubuntu环境下下载编译Android kernel源码
  4. Android源码阅读分析:从Activity开始(一)—
  5. Android ViewPager多页面滑动切换以及单
  6. 关于ADT(eclipse android)项目迁移到Androi
  7. Android O新特性系列
  8. xmlns:android和xmlns:mi
  9. android实现通知栏下载更新app示例
  10. Android实现语音识别代码