1、功能
当系统接受到短信时,会产生一条广播,广播中包含了短信的一些基本信息,如:发送人号码、内容等信息,而短信拦截器就是在短信应用拿到短信广播之前,把短信广播拦截下来,这样短信应用就不会收到广播。(就好像系统没有收到短信,其实系统已经收到短信了)
2、实现
1)注册广播
<receiver android:name="cn.miwa.manager.SmsReceiver">
<!-- android:priority="1000" 为定义广播的优先级 -->
<intent-filter android:priority="1000">
<!-- 此广播已经被google屏蔽,可以用但必须手写 -->
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
2)添加权限
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
3)代码实现
public class SmsReceiver extends BroadcastReceiver{
//intent:广播发送时使用胡ntent
@Override
public void onReceive(Context ontent , Intent intent) {
// System.out.println("接收到短信来");
//bundle对象也是通过键值对的形式来封装数据
Bundle bundle = intent.getExtras();
//数组中的每一个元素都是一条短信
Object[] objects = (Object[]) bundle.get("pdus");
for(Object object : objects){
//通过pdu创建短信对象
SmsMessage sms = SmsMessage.createFromPdu((byte[])object);
//获取发信人的号码
String address = sms.getOriginatingAddress();
//获取短信内容
String body = sms.getMessageBody();
if("123456".equals(address)){
//阻止其他广播接收到这条广播(同等于拦截)
abortBroadcast();
}
System.out.println(address + ";内容为" + body);
}
}
}