android – 哪些权限可以授予rooted设备?

简短而简单的问题:

root设备可以在运行时为应用程序授予额外权限(我记得使用adb使用“grant permission”命令).这方面的一个示例是能够读取系统日志,该日志从API16开始成为非用户权限(链接here).

有这样的权限列表吗?

解决方法

您可能正在考虑的命令是pm grant PACKAGE PERMISSION,可以使用adb shell pm grant PACKAGE PERMISSION将其发送到adb连接的设备.

但是,只能以这种方式授予或撤消可选权限.如果您尝试授予应用程序清单中未请求的权限,则不会允许操作:java.lang.SecurityException:Package PACKAGE未请求权限PERMISSION.同样,如果您尝试撤消不被视为可选的权限,则将不允许操作:java.lang.SecurityException:无法更改PERMISSION.它是应用程序所必需的.即使是有根设备或模拟器.

现在,就被认为是“可选的”而言,以及获得此类权限的列表,这有点不清楚.但是,基于一些实验,我认为这些至少包括分配给权限组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.我将此声明基于我对source code的阅读,这也与我使用该命令的经验一致.此权限的选择性强制设置的目的是允许在API 19之前和之后的条件下测试应用程序,如here所述.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...