我们在发送广播和接收广播的时候都是可以带上权限的
1. 对于发送:
sendbroadcast("com.androID.XXX_ACTION", "com.androID.permission.RECV_XXX");
第二个参数permission代表的是 谁能接收我的广播,也就是 待接收方在AndroIDManifest.xml声明这个权限后,才有资格接收这个广播
对于接收
receiver androID:name=".receiver.IFlytekMessageReceiver" androID:enabled="true" androID:exported="true" androID:permission="iauto.permission.EXECUTE_VR_ACTION"> <intent-filter> <action androID:name="com.iflytek.autofly.handMessage" /> </intent-filter> </receiver>
里面的androID:permission 代表谁可以给我发送广播?,也就是 待发送方 必须 在AndroIDManifest.xml声明这个权限后,才有资格发送这个广播
权限可以声明,那是哪里定义的呢?
定义权限:
既然可以声明使用某个权限,那么肯定某个地方定义了这个权限
安全的发送广播方式
发送方
使用mContext.sendbroadcast(intent, VrMsgDef.VR_SENDbroADCAST_PERMISSION);
第二个参数代表必须有VrMsgDef.VR_SENDbroADCAST_PERMISSION权限的应用才能接收这个广播
然后需要声明
这个声明是因为接收方的
receiver androID:name=".receiver.IFlytekMessageReceiver"
androID:enabled="true"
androID:exported="true"
androID:permission="iauto.permission.EXECUTE_VR_ACTION">
要求发送方具有的权限
接受方
因为发送方的sendbroadcast,所以有这个权限
receiver androID:name=".receiver.IFlytekMessageReceiver"
androID:enabled="true"
androID:exported="true"
androID:permission="iauto.permission.EXECUTE_VR_ACTION">
要求发送方具有的权限
对于静态注册的广播:
AndroID 8 中 默认的action 设置 已经无法实现发送
发送方需要达到下面其中的条件:
1. 调用setPackage 指定接收的模块组件包的名称2. 调用setComponent指定接收模块组件包的名称和 receiver的名称,(需要是全路径)3. 成为前台广播,intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND); **默认的广播都是后台的**
对于 动态注册的广播
可以使用setPackage 或者 setComponent 指定想要发送组件(非强制)
总结以上是内存溢出为你收集整理的Android 广播的那些 注意点全部内容,希望文章能够帮你解决Android 广播的那些 注意点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)