Android Boardcast 权限的使用

1. 广播的接收权限

设置广播接收权限的目的在于避免自己应用发送的广播被其他恶意应用接收到。简单来说就是定义谁能接收我的广播,用法如下:

首先发送方的应用在清单文件里自定义一个权限:

1
2
<permission android:name="cn.qiracle.RECEIVER"
android:protectionLevel="signature" />

这里 protectionLevel 选择 signature 或者 signatureOrSystem 更加安全。

然后发送广播时调用如下 sendBoradcast 方法:

1
2
3
4
private static final String PERMISSION_RECEIVER= "cn.qiracle.RECEIVER";
...
...
sendBroadcast(intent,PERMISSION_RECEIVER);

此时接收方app若是想接收到这个广播,需要在接收方应用的清单文件里添加如下权限:

1
<uses-permission android:name="cn.qiracle.RECEIVER" />

2.广播的发送权限

设置广播的发送权限目的在于避免自己的应用里的 receiver 被其他恶意应用发送的带有同样 action 的广播所骚扰。简单来说就是定义谁能给我发送广播。用法如下:

首先在接收方应用的清单文件里自定义一个权限:

1
2
<permission android:name="cn.qiracle.RECEIVER"
android:protectionLevel="signature" />

然后注册广播时采用如下regiserReceiver方法:

1
2
3
4
private static final String PERMISSION_SEND = "cn.qiracle.SEND";
...
...
registerReceiver(new MyReceiver(),intentFilter,PERMISSION_SEND,null);

上面是动态注册,静态注册广播方式如下:

1
2
3
4
5
6
<receiver android:name=".receiver.MyReceiver"
android:permission="cn.qiracle.SEND">

<intent-filter>
<action android:name="cn.qiracle.MYRECEIVER"/>
</intent-filter>
</receiver>

推荐使用动态注册的方式,因为笔者尝试发现自定义权限时,静态注册的方式在 Android8.0 及以上会不起作用。

此时广播的发送方 app 要想给这个应用发送广播,必须在清单文件里添加如下权限:

1
<uses-permission android:name="cn.qiracle.SEND" />
文章目录
  1. 1. 1. 广播的接收权限
  2. 2. 2.广播的发送权限
|