Android学习笔记——自定义permission

最近在配置BroadcastReceiver的时候,发现一条警告,如下图:

 

百度了一下,网上的答案基本都是说把receiver标签的exported属性改为false。这样做确实是可以去掉警告,但是会引起的一个问题就是这个广播不能被其他应用程序所使用。官方文档是这样写的:

Flag indicating whether the given application component is available to other applications.

虽然说这只是一个警告,但本人的强迫症作祟,看着实在难受~~~于是果断查看帮助文档。终于,还是找到了问题的根本原因。

http://developer.android.com/guide/topics/security/permissions.html

警告的原因大概是说,如果没有给Broadreceiver或ContentProvider加上权限的话,那么其它任何程序都是可以无障碍地访问这些组件的。所以最好的解决方法就是加上一个我们自己定义的权限。官方如是说:

To enforce your own permissions, you must first declare them in your AndroidManifest.xml using one or more <permission> tags.

 

然后在我们的receiver中添加相应的权限就行:

 

很好,世界清静了!

如果想让其它程序可以调用这个接收器,那么,那个程序就要引用这个权限了。

 

两个程序都安装之后,我们可以去看看那个调用广播的程序的权限:

 

嗯,这个就是我们自己的权限!

同样的道理,ContentProvider的配置也是类似的,不过ContentProvider可以将读和写两个权限分开配置,更加的细粒度。

 

还有另外一个地方也是别人容易忽略的,就是有时候我们要发送的广播的动作有多个应用是一样的,比如有两个广播接收器的action都是“android.intent.action.EDIT”,那我们发送一个为该动作的广播就会调用多个广播接收器。

这时候我们也可以使用自己定义的权限来解决。然后使用

 

这个方法来发送广播,这样即使动作相同,也只有拥有权限的接收器可以收到。

转载于:https://www.cnblogs.com/yjiyjige/archive/2013/06/14/3135085.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值