我有一些 Android 权限,我想知道它们属于哪个权限保护级别。有人知道如何检查吗?例如,我需要知道android.permission.RECEIVE_BOOT_COMPLETED
权限的保护级别,但我想检查更多。
编辑:
我看到我没有说清楚:我的意思不是引入权限的API级别,而是权限保护级别,四个之一:Normal,Dangerous,Signeture,Signature或System。例如,它确定在应用程序安装期间如何将此权限呈现给用户。如何检查某个权限属于哪个保护级别?
我有一些 Android 权限,我想知道它们属于哪个权限保护级别。有人知道如何检查吗?例如,我需要知道android.permission.RECEIVE_BOOT_COMPLETED
权限的保护级别,但我想检查更多。
编辑:
我看到我没有说清楚:我的意思不是引入权限的API级别,而是权限保护级别,四个之一:Normal,Dangerous,Signeture,Signature或System。例如,它确定在应用程序安装期间如何将此权限呈现给用户。如何检查某个权限属于哪个保护级别?
可以在此处的最新源中找到具有相关保护级别的默认权限列表:
https://github.com/android/platform_frameworks_base/blob/master/core/res/AndroidManifest.xml
例子:
<permission android:name="android.permission.INTERNET"
android:permissionGroup="android.permission-group.NETWORK"
android:protectionLevel="dangerous"
android:description="@string/permdesc_createNetworkSockets"
android:label="@string/permlab_createNetworkSockets" />
请记住,OEM 可以更改它们。
getPackageManager().getPermissionInfo(name, 0).protectionLevel
在此链接中,您可以看到 android 的所有权限。您在此处标记的级别:
对于Android-Permission
..
为了强制执行权限,系统的各个部分调用权限验证机制来检查给定应用程序是否具有指定的权限。权限验证机制作为可信系统进程的一部分实现,权限验证机制的调用遍布整个 API。调用 API 时没有用于检查权限的集中策略。相反,调解取决于权限验证调用的正确放置。
权限检查放在系统进程中的 API 实现中。必要时,API 实现会调用权限验证机制来检查调用应用程序是否具有必要的权限。在某些情况下,API 库也可能会冗余检查这些权限,但不能依赖此类检查:应用程序可以通过 RPC 存根直接与系统进程通信来绕过它们。因此,API 库中不应进行权限检查。相反,系统进程中的 API 实现应该调用权限验证机制。
也只需通过此文档了解更多信息Android-Permission
您可以在权限文档中找到保护级别