发送端 :
1,在清单文件中声明权限 并注册权限(应用内广播不需要声明 注册权限)
<permission
android:name="com.xcy.broadcastreceiversenddemo.MY_PERMISSION"
android:protectionLevel="signature"/>
<uses-permission android:name="com.xcy.broadcastreceiversenddemo.MY_PERMISSION" />
其中users-permission和其他正常声明的权限一样 只不过name不同
<uses-permissionandroid:name="android.permission.BLUETOOTH"/>
而Permission用于自定义权限 标签常用的属性就是name protectionlevel
name就是权限的名字保证系统内不重复就行
protectionLevlel表示安全级别
从低到高的顺序有以下四种:
- normal:普通权限,优先级最低,需要在应用安装时提示用户授权,否则无法安装,而一旦允许,后面APP在运行过程中将一直拥有该权限。
- dangerous:危险权限,比如通讯录,短信等,该权限在6.0以下,表现行为与normal无异,但在6.0及以上需要在APP运行过程中动态申请。
- signature:获取该权限,必须保证请求方和接收方使用同一个签名文件,在安装时默认授权,不会提示用户。该权限一般用于系统内置应用,或者同一个公司的多个APP中。
- signatureOrSystem:相比signature多了一个条件,当请求方为系统应用时默认拥有该权限,一般用于系统内置应用。
2.发送广播
private final String permission = "com.xcy.broadcastreceiversenddemo.MY_PERMISSION";
private final String action = "com.xcy.broadcastreceiversenddemo.MY_ACTION";
public void sendBroadcastReceiver(){
Log.d(TAG,"sendBroadcastReceiver");
Intent intent = new Intent();
intent.setAction(action);
sendBroadcast(intent,permission);
接收端 :
1.注册权限
<uses-permission android:name="com.xcy.broadcastreceiversenddemo.MY_PERMISSION" />
2.静态或者动态注册广播监听