android组件之一BroadCastReceiver 短息拦截器

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);
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值