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指明调用这个组件需要的权限。

⚠️ **GitHub.com Fallback** ⚠️