Android四大组件之BroadcastReceiver(三)

简介: 接下来讲一下有序广播中对广播的拦截、有序广播与标准广播的区别、广播的安全性问题

上一篇讲了如何动态注册广播、如何静态注册广播,以及两者之间的区别,文章链接如下:

https://developer.aliyun.com/article/995230?spm=a2c6h.13148508.setting.14.41004f0eRPHDsB

接下来讲一下有序广播中对广播的拦截、有序广播与标准广播的区别、广播的安全性问题

一、有序广播

上一篇已经讲过,有序广播是同步的,同一个时刻只有一个接收者接收广播,当该接收者处理完事务后广播才会继续往下传播,但是当前的接收者也可以对广播进行一个拦截截断,使广播到了自己后就完成使命,不会继续传播。

在这一点有点类似于Android的事件分发机制,事件被消费了,就不会往下传递。截断广播可以直接在接收者的onReceiver方法中调用一下方法:

abortBroadcast();
二、有序广播与标准广播的区别

标准广播:

1、同级别接收者先后是随机的(无序的)

2、级别低的后接收到广播

3、接收器不能截断广播的继续广播,也不能处理广播

4、同级别动态注册高于静态注册

有序广播:

1、同级别接收是随机的(结合下一条)

2、同级别动态注册高于静态注册

3、排序规则为:将当前系统中所有有效的动态注册和静态注册的BroadcastReceiver按照priority属性值从大到小排序

4、先接收的BroadcastReceiver可以对此有序广播进行截断,使后面的BroadcastReceiver不再接收到此广播,也可以对广播进行修改,使后面的BroadcastReceiver接收到广播后解析得到错误的参数值。

三、安全性问题

广播可以跨进程(跨app)通信,且exported属性在有intent-filter的情况下默认值是true,所以可能出现以下的安全隐患

1、其他App可能针对性的发出与当前app intent-filter相匹配的广播,导致app不断的接收到广播并处理

2、其他App可以注册与当前app一样的intent-filter用于接收广播,获取广播具体的信息。

针对以上两种情况,业界常见的一些增加安全性的方案包括:

1、对于应用内部的发送和接收的广播,将exported设置成false,使得非本app内部发出的广播不被接收到。

2、在广播发送和接收时,增加相应的permission,用于权限验证。

3、发送广播时,指定特定广播接收器所在的包名,具体通过intent.setPackage(packageName)指定,这样子此广播将只会发送到此包中app内与之相匹配的有效广播接收器中。

4、采用LocalBroadcastManager的方式。

相关文章
|
2月前
|
设计模式 Android开发
[Android 四大组件] --- BroadcastReceiver
[Android 四大组件] --- BroadcastReceiver
33 0
|
3月前
|
Android开发 开发者
什么是Android Jetpack,它包括哪些组件?
什么是Android Jetpack,它包括哪些组件?
39 0
|
2月前
|
数据可视化 Android开发
[Android 四大组件] --- Service
[Android 四大组件] --- Service
24 0
|
2月前
|
Android开发
[Android 四大组件] --- Activity
[Android 四大组件] --- Activity
22 1
|
2月前
|
存储 数据库 Android开发
安卓四大组件是什么?
安卓四大组件是什么?
|
3月前
|
数据库 Android开发 开发者
Android基础知识:什么是Android应用的四大组件?
Android基础知识:什么是Android应用的四大组件?
59 1
|
4月前
|
Android开发 Kotlin
android开发,使用kotlin学习BroadcastReceiver
android开发,使用kotlin学习BroadcastReceiver
66 0
|
8月前
|
数据库 Android开发 开发者
Android 开发四大组件(Activity、Service、Broadcast Receiver、Content Provider)
Android 开发四大组件(Activity、Service、Broadcast Receiver、Content Provider)
104 0
|
Android开发 数据可视化 API
Android开发的四大组件
原文链接: http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html android生命周期(详细总结) http://blog.csdn.net/ican87/article/details/21874447 andridod的四大组件(详细总结) http://blog.csdn.net/ican87/article
1457 0
|
Android开发
一个帖子学会Android开发四大组件
原贴地址http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 写的非常不错。
853 0