如何使用adb grant或adb revoke?

gab*_*iel 41 android adb android-permissions

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

grant <PACKAGE_PERMISSION>
Run Code Online (Sandbox Code Playgroud)

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

revoke <PACKAGE_PERMISSION>
Run Code Online (Sandbox Code Playgroud)

撤消对应用程序的权限.只能撤消应用程序声明的可选权限.

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

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

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

Cyn*_*nic 62

所以在棒棒糖中,我认为你需要首先做"adb shell"然后你应该尝试的工作:

adb shell pm grant com.name.app android.permission.READ_PROFILE
Run Code Online (Sandbox Code Playgroud)

这应该在Android M上改变,你应该可以使用:

adb shell pm revoke com.name.app android.permission.READ_PROFILE
Run Code Online (Sandbox Code Playgroud)

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

adb shell 
pm grant com.name.app android.permission.READ_PROFILE
Run Code Online (Sandbox Code Playgroud)

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

adb shell pm list packages -f
Run Code Online (Sandbox Code Playgroud)

然后获得权限:

adb pull /path/to/package/from/previous/step.apk
Run Code Online (Sandbox Code Playgroud)

  • 为什么不能以这种方式授予 PACKAGE_USAGE_STATS ?还有其他选择吗? (2认同)

Joh*_*ada 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
Run Code Online (Sandbox Code Playgroud)


ar-*_*r-g 5

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

adb shell pm reset-permissions your.package.name 
Run Code Online (Sandbox Code Playgroud)

  • **请注意此命令,因为它会重置您的所有系统权限.**pm reset-permissions是无参数的.它不关心你的.package.name. (10认同)