【问题标题】:How do I use adb grant or adb revoke?如何使用 adb grant 或 adb revoke?
【发布时间】:2013-04-30 21:11:00
【问题描述】:

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

grant <PACKAGE_PERMISSION>

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

revoke <PACKAGE_PERMISSION>

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

谁能举例说明使用它们的正确语法吗?

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

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

【问题讨论】:

    标签: android adb android-permissions


    【解决方案1】:

    添加:

    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
    

    可以在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
    

    【讨论】:

    • 为什么不能以这种方式授予 PACKAGE_USAGE_STATS?有其他选择吗?
    • 如何在运行时使用这个?
    【解决方案2】:

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

    adb shell pm reset-permissions
    

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

    【讨论】:

    • 请小心使用此命令,因为它会重置您的所有系统权限。 pm reset-permissions 是无参数的。它不关心你的.package.name。
    • 在这种情况下重置是什么意思?撤销所有权限?或者将它们设置为应用程序清单想要的任何内容?
    【解决方案3】:

    所以这里有一个小命令行 (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
    

    【讨论】:

    • 注意:粘贴命令后,我发现我需要删除第一个 '\' 字符(紧跟在 apk 文件名之后),以便 sed 命令正确运行。
    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    相关资源
    最近更新 更多