permission 和 user permission 的区别 - UserWang/Android-Notes GitHub Wiki
参考官方文档:https://developer.android.com/guide/topics/manifest/manifest-intro.html#perms
中文翻译地址:API指南之应用清单文件
####permission
<permission android:description="string resource"
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" |
"signature" | "signatureOrSystem"] />
####user-permission
<uses-permission android:name="string"
android:maxSdkVersion="integer" />
如果应用需要访问受权限保护的功能,则必须在清单文件中使用 元素声明应用需要该权限。 但是,将应用安装到设备上之后,安装程序会通过检查签署应用证书的颁发机构并(在某些情况下)询问用户,确定是否授予请求的权限。 如果授予权限,则应用能够使用受保护的功能。 否则,其访问这些功能的尝试将会失败,并且不会向用户发送任何通知。
此外,应用也可以使用权限保护自己的组件(Activity、服务、广播接收器和内容提供程序)。 它可以采用由 Android 定义(如 android.Manifest.permission 中所列)或由其他应用声明的任何权限。或者,它也可以定义自己的权限。新权限用 < permission > 元素来声明。 例如,Activity 可受到如下保护:
<manifest . . . >
<permission android:name="com.example.project.DEBIT_ACCT" . . . />
<uses-permission android:name="com.example.project.DEBIT_ACCT" />
. . .
<application . . .>
<activity android:name="com.example.project.FreneticActivity"
android:permission="com.example.project.DEBIT_ACCT"
. . . >
. . .
</activity>
</application>
</manifest>
请注意,在此示例中,DEBIT_ACCT 权限不仅是通过 元素来声明,而且其使用也是通过 元素来请求。要让应用的其他组件也能够启动受保护的 Activity,就必须请求其使用权限,即便保护是由应用本身施加的亦如此。
同样还是在此示例中,如果将 permission 属性设置为在其他位置(例如,android.permission.CALL_EMERGENCY_NUMBERS)声明的权限,则无需使用 元素再次声明。 但是,仍有必要通过 请求使用它。
元素为一组将在代码中定义的权限声明命名空间。 同时, 为一组权限(包括在清单文件中使用 元素声明的权限以及在其他位置声明的权限)定义标签。它只影响如何对提供给用户的权限进行分组。 元素并不指定哪些权限属于该组,而只是为组提供名称。 通过向 元素的 permissionGroup 属性分配组名,将权限放入组中。
###总结
uses-permission是申请权限;
permission是自己定义权限;
android组件中的permission指明调用这个组件需要的权限。