Android文档包含adb grant和adb revoke命令的以下说明。
grant <PACKAGE_PERMISSION>
授予应用程序权限。只能授予应用程序声明的可选权限。
revoke <PACKAGE_PERMISSION>
撤消对应用程序的权限。只有应用程序声明的可选权限才能被撤销。
有人可以举例说明使用它们的正确语法吗?
我认为这将是android.permission.WRITE_EXTERNAL_STORAGE
之类的权限,或者只是WRITE_EXTERNAL_STORAGE
。好吧,我尝试了这些,还有其他几个,我无法让它工作。
我也试过(无济于事)包和权限的几种组合,这对我来说更有意义(这听起来像是一个修改一个包的权限的命令,而不是全部)
答案 0 :(得分:53)
所以在Lollipop中,我认为你需要首先做“adb shell”,然后你尝试的应该工作:
adb shell pm grant com.name.app android.permission.READ_PROFILE
这应该会在Android M上发生变化,您应该可以使用:
adb shell pm revoke com.name.app android.permission.READ_PROFILE
可以找到完整的权限列表here。如果您设置了android build tools,则可以查看该应用正在使用的权限。首先使用
adb shell pm list packages -f
然后将包复制到您的计算机:
adb pull /path/to/package/from/previous/step.apk
然后获得权限:
aapt d permissions path/to/app/on/computer.apk
答案 1 :(得分:5)
如果您碰巧不知道权限名称或想要清除所有权限,可以使用
adb shell pm reset-permissions your.package.name
答案 2 :(得分:2)
所以这里有一个小命令行(mac / linux),可以从命令行为你的应用程序授予它所需的所有权限。
aapt d permissions ./path/to/your.apk \
| sed -n \
-e "s/'//g" \
-e "/^uses-permission: name=android.permission\./s/^[^=]*=//p" \
| xargs -n 1 adb shell pm grant com.your.package