service

本文介绍了Android平台上的短信拦截实现方法及广播机制的应用。通过继承BroadcastReceiver并重写onReceive方法来处理接收到的短信,并展示了如何使用abortBroadcast()方法进行短信拦截。此外,还探讨了发送有序广播的方法及其在不同接收者之间的传递过程。
public class SmsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {


        //拿到短信信息
//        短信内容封装在intent中
        Bundle bundle=intent.getExtras();
        //以pdus为键,如果有多条短信就会取出多条,所以是复数,是object数组,每一个元素,就是一个短信
        Object[] objs = ( Object[])bundle.get("pdus");//带一个s表示要取出多条
        //用一个for循环把每个元素取出
        for (Object object:objs){
            //把元素还原成短信
            SmsMessage sms = SmsMessage.createFromPdu((byte[]) object);
            //如果短信来的是这个号,这里要修改优先级,必须在用户收到系统短信之前就先判断一下,过滤
            if(sms.getDisplayOriginatingAddress().equals("13134158030")){
//                全部拦截
                abortBroadcast();
            }
//            短信内容
                sms.getMessageBody();
        }

*************************************************************
这个是发送方广播:
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public  void click(View v){
        Intent intent=new Intent();
        intent.setAction("com.lyz.qw");
        //这里发送数据可以在intent里还传,可以用bundle,可以用指定code
        //发送有序广播 ,政府,

//        这第三参数是广播接收者对象
        sendOrderedBroadcast(intent, null, new MyReceiver() , null, 0, "每人发100斤大米", null);
    }

    private class MyReceiver extends BroadcastReceiver {
        //最终接收者;只接收有序广播,,这个内部类不用在清单文件配置,他是最后收到了的有序广播,而且是一定会收到的
        @Override
        public void onReceive(Context context, Intent intent) {
            String text = getResultData();

            Log.i("MainActivity","wqwqwqwq收到了"+text);
        }
    }
}
三个接收方:
 */
public class HomeSHI extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {


        String text = getResultData();

        Log.i("HomeZF","市收到了"+text);
        abortBroadcast();

    }
}
public class HomeXian extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {


        String text = getResultData();

        Log.i("HomeZF","县收到了"+text);

    }
public class HomeSHI extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {


        String text = getResultData();

        Log.i("HomeZF","市收到了"+text);
        abortBroadcast();

    }
}
广播接受者短信权限
  1. 广播时用意图来发的。
  2. 短信之所以能收到短信,是因为收到了短信的这条广播而已。我们放火墙把他给拦截了,短信就收不到了广播 了,就不显示出来了。
  3. SD:广播也要求intnet-filter完全匹配,我要监听SD他的状态的广播,所以我的项目在清单文件里要在receiver里的intent -filter 设置完全匹配。
  4. sendOrderedBroadcast(intent, null, null, null, 0, "每人发100斤大米", null);
    这个在发送方里设置发送的是有序广播!
  5. 哪个第一个项目ip拨号器是有序广播,而且设置了最终接收者,无论拦不拦截都会收到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值