您的位置:首页 > 其它

关于那个permission和uses-permission的那些坑

2017-01-06 16:09 344 查看
目前根据公司项目一直在研究Launcher源码开发,发现Manifest中Launcher数据库组件的访问权限那块

android:readPermission="com.android.launcher3.permission.READ_SETTINGS"
com.android.launcher3.permission.READ_SETTINGS
一共出现了三次,一次是自定义权限里,一次是申请使用权限那里,之前一直没仔细考虑过同一清单文件中permission和uses-permission修饰同一权限的问题,突然遇到后确实有点懵逼,后来在网上查了下,还是大神很多的,出现这种情况的原因是Launcher开发中contentProvider提供的数据库还是被本应用中所申请访问.
<permission>和 <uses-permission> 以及<application> 都是同级的(说不同级的都是被人误导了),区别在于一个是自定义权限,一个是使用权限。从名称uses就可以看出,uses是使用不是用户。
  比如一个应用A给其它应用提供一个provider,为了安全性,还为这个provider声明了一个自己定义的权限,因此要用到<permission> 。
  如:<provider android:name=".provider.LeaderProvider"
android:authorities="com.jacp.provider.demo.leader"
android:permission="com.jacp.demo.bage.see1"
android:exported="true"   />
<permission android:protectionLevel="normal" android:name="com.jacp.demo.bage.see1"></permission>

然后另外一个应用B想要 访问A提供的provider,就需要
在 mianfest 如下申请使用访问A的provider需要的权限,如
<uses-permission android:name="com.jacp.demo.bage.see1"></uses-permission>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: