Android BroadcastReceiver之短信拦截(黑名单)
2017-08-04 18:28
246 查看
短信拦截器
系统收到短信时会产生一条广播,广播中包含了短信的号码和内容
定义广播接收者接收短信广播
public void onReceive(Context context, Intent intent) { //拿到广播里携带的短信内容 Bundle bundle = intent.getExtras(); Object[] objects = (Object[]) bundle.get("pdus"); for(Object ob : objects ){ //通过object对象创建一个短信对象 SmsMessage sms = SmsMessage.createFromPdu((byte[])ob); System.out.println(sms.getMessageBody()); System.out.println(sms.getOriginatingAddress()); }
}
系统创建广播时,把短信存放到一个数组,然后把数据以pdus为key存入bundle,再把bundle存入intent
清单文件中配置广播接收者接收的广播类型,注意要设置优先级属性,要保证优先级高于短信应用,才可以实现拦截
<receiver android:name="com.itheima.smslistener.SmsReceiver"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>
添加权限
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
4.0之后,广播接收者所在的应用必须启动过一次,才能生效
4.0之后,如果广播接收者所在应用被用户手动关闭了,那么再也不会启动了,直到用户再次手动启动该应用
短信拦截器
* 设置广播接收者的优先级,大于系统短信应用,先一步收到短信广播,然后拦截广播,短信应用收不到广播,用户就看不到短信了
* 4.0之后,进程需要启动过一次,广播接收者才能生效
* 4.0之后,用户手动停止进程,那么广播接收者再也不会启动了,直到用户下一次手动启动进程
<receiver android:name="com.cy.smslanjie.SmsReceiver"> 4000 <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>
public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //取出短信内容 Bundle bundle = intent.getExtras(); //数组中的每一个元素,就是一条短信 Object[] objects = (Object[]) bundle.get("pdus"); for (Object object : objects) { //把数组中的元素转换成短信对象 SmsMessage sms = SmsMessage.createFromPdu((byte[]) object); //获取对方号码 String address = sms.getOriginatingAddress(); //获取短信内容 String body = sms.getMessageBody(); System.out.println(address + ";" + body); if("13888".equals(address)){ //拦截短信 abortBroadcast(); } } } }
参考:Android BroadcastReceiver
相关文章推荐
- Android-拦截短信(BroadcastReceiver)
- android四大组件之BroadcastReceiver短信拦截功能
- Android之BroadcastReceiver 广播接受者(短信窃听实例)
- Android之BroadcastReceiver 广播接受者(短信窃听实例)
- Android 通过BroadcastReceiver创建短信接收程序
- Android之BroadcastReceiver讲义并通过广播机制实现短信窃听
- 四大组件之一 ----------- BroadcastReceiver (拦截短信并屏蔽系统的Notification .)
- Android项目:手机安全卫士(12)—— 通讯卫士之电话短信黑名单设置与拦截
- Android开发——四大组件BroadcastReceiver实例广播事件的拦截转发
- 黑名单拦截短信【Android】
- 四大组件之一 ----------- BroadcastReceiver (短信拦截)
- Android--短信***及黑名单拦截
- Android学习笔记_19_广播接收者 BroadcastReceiver及其应用_窃听短信_拦截外拨电话
- Android--短信窃听器及黑名单拦截
- Android BroadcastReceiver监听手机短信
- Android(java)学习笔记176:BroadcastReceiver之 短信发送的广播接收者
- android-BroadcastReceiver 通过终止广播 阻止用户收到短信
- BroadcastReceiver 广播 短信拦截
- android BroadcastReceiver详细讲解1-自带的广播接受器-拨号、短信、卸载/安装、开机启动
- Android:BroadcastReceiver:采用广播接收者实现短信窃听器