Android Broadcast 和 BroadcastReceiver的自定义权限使用

在Android应用开发中,有时会遇到以下两种情况,

1. 一些敏感的广播并不想让第三方的应用收到 ;

2. 要限制自己的Receiver接收某广播来源,避免被恶意的同样的ACTION的广播所干扰。


在这些场景下就需要用到广播的权限限制。

第一种场景: 谁有权收我的广播?

在这种情况下,可以在自己应用发广播时添加参数声明Receiver所需的权限。

首先,在Sender app的Androidmanifest.xml中定义新的权限RECV_XXX,例如:


[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <permission android:name = "com.android.permission.RECV_XXX"/>  

然后,在Sender app发送广播时将此权限作为参数传入,如下:

 

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. sendBroadcast("com.android.XXX_ACTION""com.android.permission.RECV_XXX");  

这样做之后就使得只有具有permission权限的Receiver才能接收此广播要接收该广播,在Receiver应用的AndroidManifest.xml中要添加对应的RECV_XXX权限。

如下:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <uses-permission android:name="com.android.permission.RECV_XXX"></uses-permission>  


第二种场景: 谁有权给我发广播?

在这种情况下,需要在Receiver app的<receiver> tag中声明一下Sender app应该具有的权限。

首先,在Receiver app的AndroidManifest.xml中定义新的权限SEND_XXX,例如:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <permission android:name="com.android.SEND_XXX"/>  

然后,在Receiver app的Androidmanifest.xml中的<receiver>tag里添加权限SEND_XXX的声明,如下:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <receiver android:name=".XXXReceiver"   
  2.           android:permission="com.android.permission.SEND_XXX">   
  3.     <intent-filter>  
  4.          <action android:name="com.android.XXX_ACTION" />   
  5.     </intent-filter>  
  6. </receiver>  



这样一来,该Receiver便只能接收来自具有该send_permission权限的应用发出的广播。

要发送这种广播,需要在Sender app的AndroidManifest.xml中也声明使用该权限即可,如下:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <uses-permission android:name="com.android.permission.SEND_XXX"></uses-permission>  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值