<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"] />
包含于:
<manifest>
说明:
声明一个安全权限,可用于限制对此应用程序或其他应用程序的特定组件或功能的访问。有关权限如何工作的详细信息,请参阅简介中的“权限”部分和“安全性和权限”文档。
属性:
android:description
用户可读的权限描述,比标签更长,更丰富。可以显示它以向用户解释权限 - 例如,当询问用户是否将权限授予另一个应用程序时。
必须将此属性设置为对字符串资源的引用;与label属性不同,它不能是原始字符串。
android:icon
对表示权限的图标的可绘制资源的引用。
android:label
权限的名称,可以向用户显示的名称。
为方便起见,在开发应用程序时,标签可以直接设置为原始字符串。但是,当应用程序准备好发布时,应将其设置为对字符串资源的引用,以便它可以像用户界面中的其他字符串一样进行本地化。
android:name
权限的名称。这是将在代码中用于引用权限的名称 - 例如,在<uses-permission>元素中以及应用程序组件的权限属性。
注意:系统不允许多个包声明具有相同名称的权限,除非所有包都使用相同的证书进行签名。如果程序包声明了权限,则系统不允许用户安装具有相同权限名称的其他程序包,除非这些程序包使用与第一个程序包相同的证书进行签名。为避免命名冲突,我们建议对自定义权限使用反向域式命名,例如com.example.myapp.ENGAGE_HYPERSPACE。
android:permissionGroup
将此权限分配给组。此属性的值是组的名称,必须使用此应用程序或其他应用程序中的<permission-group>元素声明该组的名称。如果未设置此属性,则该权限不属于组。
android:protectionLevel
表征权限中隐含的潜在风险,并指出系统在确定是否向请求它的应用程序授予权限时应遵循的过程。该值可以设置为以下字符串之一:
Value | Meaning |
"normal " | 默认值。风险较低的权限,允许请求应用程序访问隔离的应用程序级功能,对其他应用程序,系统或用户的风险最小。系统会在安装时自动向请求的应用程序授予此类权限,而不会要求用户明确批准(尽管用户始终可以选择在安装之前查看这些权限)。 |
"dangerous " | 一种风险较高的权限,可以使请求的应用程序访问私有用户数据或控制可能对用户产生负面影响的设备。由于此类权限会引入潜在风险,因此系统可能不会自动将其授予请求的应用程序。例如,应用程序请求的任何危险许可可以显示给用户并且在继续之前需要确认,或者可以采取一些其他方法以避免用户自动允许使用这些设施。 |
"signature " | 仅当请求的应用程序使用与声明权限的应用程序相同的证书进行签名时系统授予的权限。如果证书匹配,系统会自动授予权限,而不通知用户或要求用户明确批准。 |
"signatureOrSystem " | 系统仅授予Android系统映像中的应用程序或使用与声明权限的应用程序相同的证书签名的权限。请避免使用此选项,因为签名保护级别应该足以满足大多数需求,并且无论应用程序的确切位置如何都可以正常工作。 “signatureOrSystem”权限用于某些特殊情况,其中多个供应商将应用程序内置到系统映像中,并且需要明确共享特定功能,因为它们是一起构建的。 |
引入于:
API Level 1
参考:
<uses-permission>
<permission-tree>
<permission-group>