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”,那我们发送一个为该动作的广播就会调用多个广播接收器。

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

 

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

posted @ 2013-06-14 10:14  孤~影  阅读(1176)  评论(2编辑  收藏  举报