android 权限说明
1. 权限的定义语法
注:
任何应用都可以定义权限
<permission 标签是定义权限
<uses-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" | ...] />
- android:description :权限的说明,比标签更长,信息更丰富。
- android:icon : 对表示权限的图标的引用。
- android:label : 权限的名称。
- android:name: 用于在代码中引用权限的名称。
<uses-permission>
- android:permissionGroup : 将此权限分配给一个组。
- android:protectionLevel : 说明权限中隐含的潜在风险,并指示系统在确定是否将权限授予请求授权的应用时要遵循的流程。
每个保护级别都包含基本权限类型以及零个或多个标志。例如,“dangerous” 保护级别没有标志。相反,保护级别 “signature|privileged” 是 “signature” 基本权限类型和 “privileged” 标志的组合。
值 | 含义 |
---|---|
“normal” | 系统会自动向在安装时请求授权的应用授予此类权限,无需征得用户的明确许可 |
“dangerous” | 系统可能不会自动向请求授权的应用授予此类权限,需要应用主动向用户请求 |
“signature” | 只有在请求授权的应用使用与声明权限的应用相同的证书进行签名时系统才会授予的权限。如果证书匹配,系统会在不通知用户或征得用户明确许可的情况下自动授予权限。 注:如果是系统定义的权限,则需要使用此权限的应用是平台签名。 如果是应用定义的权限,则需要使用此权限的应用和定义权限的签名相同。 |
“knownSigner” | 只有在请求授权的应用使用允许使用的证书进行签名时系统才会授予的权限。如果请求者的证书已列出,系统会在不通知用户或征得用户明确许可的情况下自动授予权限。 |
“signatureOrSystem” “signature|privileged” | 系统仅向位于 Android 系统映像的专用文件夹中的应用或使用与声明权限的应用相同的证书进行签名的应用授予的权限。 注:privileged 意味着应用位于 priv-app/ 目录下 |
系统权限定义的位置
源码位置:frameworks/base/core/res/AndroidManifest.xml
设备上包的位置:system/framework/framework-res.apk
android.permission.CAMERA 权限定义示例:
<permission android:name="android.permission.CAMERA"
android:permissionGroup="android.permission-group.UNDEFINED"
android:label="@string/permlab_camera"
android:description="@string/permdesc_camera"
android:backgroundPermission="android.permission.BACKGROUND_CAMERA"
android:protectionLevel="dangerous|instant" />
参考地址:
系统开发,权限说明文档。
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/permission/Permissions.md
应用权限开发文档
https://developer.android.google.cn/guide/topics/permissions/overview?hl=zh-cn
权限列表:
https://developer.android.google.cn/reference/android/Manifest.permission?hl=en#ACCESS_NETWORK_STATE
定义格式:
https://developer.android.com/guide/topics/manifest/permission-element?hl=zh-cn