简短明了的问题:
已经root(越狱)的设备可以在运行时授予应用程序额外的权限(使用adb命令中的“授权权限”,如我所记得的那样)。其中一个例子是能够读取系统日志,这成为从API16开始的非用户权限(链接在此处)。
是否有这些权限的列表?
简短明了的问题:
已经root(越狱)的设备可以在运行时授予应用程序额外的权限(使用adb命令中的“授权权限”,如我所记得的那样)。其中一个例子是能够读取系统日志,这成为从API16开始的非用户权限(链接在此处)。
是否有这些权限的列表?
pm grant PACKAGE PERMISSION
,可以使用adb shell pm grant PACKAGE PERMISSION
发送到连接的adb设备。
然而,只有可选权限可以通过这种方式授予或撤销。如果尝试授予应用清单中未请求的权限,则会出现错误消息Operation not allowed: java.lang.SecurityException: Package PACKAGE has not requested permission PERMISSION
。同样,如果试图撤消非可选权限,则会出现错误消息Operation not allowed: java.lang.SecurityException: Can't change PERMISSION. It is required by the application
。即使对于已root的设备或模拟器也是如此。
现在,关于什么被视为“可选”的内容,以及获取此类权限列表,这还不太清楚。但是,根据一些实验,我认为这包括至少分配给权限组android.permission-group.DEVELOPMENT_TOOLS
的权限集。您可以使用pm list permissions -g
在正在运行的设备上查看它们。在我的API 19模拟器以及运行AOSP 4.4.4的Nexus 7上,它们是:
group:android.permission-group.DEVELOPMENT_TOOLS
permission:android.permission.ACCESS_ALL_EXTERNAL_STORAGE
permission:android.permission.SIGNAL_PERSISTENT_PROCESSES
permission:android.permission.READ_LOGS
permission:android.permission.SET_ALWAYS_FINISH
permission:android.permission.WRITE_SECURE_SETTINGS
permission:android.permission.SET_PROCESS_LIMIT
permission:android.permission.CHANGE_CONFIGURATION
permission:android.permission.DUMP
permission:android.permission.SET_DEBUG_AP
pm grant
命令。我通过使用设置应用程序并查看报告的权限更改来观察和确认这一点。android.permission.INTERNET
这样的普通权限不能以这种方式授予或撤销。pm set-permission-enforced PERMISSION
的额外问题:据我所知,目前唯一支持此功能的权限是android.permission.READ_EXTERNAL_STORAGE
。我基于我的阅读源代码,也与我使用该命令的经验一致。选择强制执行此权限的目的是允许根据此处描述的API 19之前和之后的条件测试应用程序。