如何使用adb grant或adb revoke?

时间:2013-05-07 02:07:28

标签: android adb android-permissions

Android文档包含adb grant和adb revoke命令的以下说明。

grant <PACKAGE_PERMISSION>

授予应用程序权限。只能授予应用程序声明的可选权限。

revoke <PACKAGE_PERMISSION>

撤消对应用程序的权限。只有应用程序声明的可选权限才能被撤销。

有人可以举例说明使用它们的正确语法吗?

我认为这将是android.permission.WRITE_EXTERNAL_STORAGE之类的权限,或者只是WRITE_EXTERNAL_STORAGE。好吧,我尝试了这些,还有其他几个,我无法让它工作。

我也试过(无济于事)包和权限的几种组合,这对我来说更有意义(这听起来像是一个修改一个包的权限的命令,而不是全部)

3 个答案:

答案 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
相关问题