什么是" appop"和"开发"保护标志用于?

时间:2015-02-02 19:53:50

标签: android android-manifest android-permissions

我正在编写一些测试代码来验证我们的应用请求的权限的类型和范围,我注意到最近在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

我想知道这些保护级别与清单中可以定义的级别以及是否/何时应该使用它们之间的差异。

3 个答案:

答案 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 grantpm revoke命令。

您可以检查frameworks/base/core/res/AndroidManifest.xml以查看通常只授予签名或系统应用程序的权限可以由shell授予普通应用程序。