我正在编写一些测试代码来验证我们的应用请求的权限的类型和范围,我注意到最近在Android中添加了两个新的保护级别。
根据official Android docs,AndroidManifest.xml中的<permission>
元素接受以下四个值之一:
android:protectionLevel = [“normal”| “危险”| “签名”| “signatureOrSystem”]
但是我注意到PermissionInfo
类(参见here)有总共六个保护级别的标志。似乎这两个级别分别在SDK 16和21中添加,但它们似乎没有记录:
int PROTECTION_FLAG_DEVELOPMENT = 0x20
int PROTECTION_FLAG_APPOP = 0x40
我想知道这些保护级别与清单中可以定义的级别以及是否/何时应该使用它们之间的差异。
答案 0 :(得分:4)
development
标记(0x20
):
基本权限类型的附加标志:此权限也可以 (可选)授予开发应用程序。
appop
标志(0x40
):
基本权限类型的附加标志:此权限非常接近 与用于控制访问的应用程序相关联。
以下是参考:http://developer.android.com/reference/android/R.attr.html
development
权限或类似内容通常用于需要某些权限进行开发/调试但不用于发布目的的情况。例如,假设您正在创建一个新应用程序。首先,将应用程序的候选版本部署到选定的一组人员/测试人员。您可以使用development
权限级别来启用可能对初始测试和结果收集有用的功能,例如GPS以查看测试组的位置以及用于存储和通过电子邮件发送日志以进行分析的存储/网络功能。一旦准备好进行一般发布,就会删除此权限,因为不再需要这些数据的收集,或者更可能的是,对于更大的人群(即隐私问题等)实际上不可能。
就appop
许可而言,我不太确定......
答案 1 :(得分:4)
appop
权限只不过是对谷歌在Android 4.3中引入的App Ops工具的回忆,此后一直被删除。理论上,用户可以在测试期间切换具有appop
标志的权限,以验证在启用或禁用某些软件或硬件功能时应用程序的行为方式。
这是Google工程师提供的App Ops的实际描述:
例如,它现在用于每个应用程序的通知控件,用于跟踪新位置UI中访问位置的时间,新当前SMS应用程序控件的某些方面等。
以下是完整帖子的链接:https://plus.google.com/+DannyHolyoake/posts/FkfBxA5i3iG
答案 2 :(得分:1)
GRANT_RUNTIME_PERMISSIONS
被授予shell应用程序。它允许shell用户在运行时授予开发权限。这是完成的
pm grant
和pm revoke
命令。
您可以检查frameworks/base/core/res/AndroidManifest.xml
以查看通常只授予签名或系统应用程序的权限可以由shell授予普通应用程序。