2013-05-07 134 views
23

Android文档包含adb grant和adb revoke命令的以下说明。如何使用adb grant或adb revoke?

grant <PACKAGE_PERMISSION> 

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

revoke <PACKAGE_PERMISSION> 

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

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

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

我也试过(无济于事)封装和权限的几种组合,这让我更有意义(这听起来像是会修改一个包,并不是所有权限的命令)

回答

34

所以棒棒糖我认为你需要做的“亚壳”第一,那么你尝试过什么应该工作:

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

为什么PACKAGE_USAGE_STATS不能被授予这样?有其他选择吗? – 2017-01-09 00:02:18

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 
5

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

adb shell pm reset-permissions your.package.name 
+3

**使用此命令时要小心,因为它会重置所有系统权限。** pm reset-permissions无参数。它不关心你的.package.name。 – 2017-11-09 12:33:14