56

Android 文档包含以下对 adb grant 和 adb revoke 命令的描述。

grant <PACKAGE_PERMISSION>

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

revoke <PACKAGE_PERMISSION>

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

任何人都可以举一个正确语法的例子来使用它们吗?

我认为这将是一个许可android.permission.WRITE_EXTERNAL_STORAGE,或者只是WRITE_EXTERNAL_STORAGE. 好吧,我尝试了这些,还有其他几个,但我无法让它工作。

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

4

3 回答 3

92

添加:

adb shell pm grant com.name.app android.permission.READ_PROFILE

去除:

adb shell pm revoke com.name.app android.permission.READ_PROFILE

这在 Android M 版本中发生了变化,因此在 Lollipop 中(在撰写答案的原始时间)你需要先做adb shell

adb shell 
pm grant com.name.app android.permission.READ_PROFILE

可以在此处找到完整的权限列表。如果您设置了android 构建工具,则可以查看该应用正在使用哪些权限。首次使用

adb shell pm list packages -f

然后将包复制到您的计算机:

adb pull /path/to/package/from/previous/step.apk

然后获取权限:

aapt d permissions path/to/app/on/computer.apk
于 2015-07-31T19:17:28.547 回答
6

如果您碰巧不知道权限名称或想清除所有可以使用的权限

adb shell pm reset-permissions

警告:这将重置手机上所有应用程序的运行时权限。您无法为特定包重置。

于 2017-03-29T13:02:16.090 回答
5

所以这里有一个小命令行 (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
于 2017-01-27T23:44:40.893 回答