如何在没有root的情况下使用adb授予权限?

时间:2018-08-29 14:03:25

标签: android adb android-permissions

背景

我正在尝试创建一个可以授予和撤消其他应用程序权限的应用程序。
为此,我使用adb命令:

pm grant packageName permissionName

如果我通过具有root权限的shell调用它,则效果很好。

问题

问题是,当我在没有root权限的情况下调用此命令时,会收到

  

不允许的操作:java.lang.SecurityException:   grantRuntimePermission:用户2000和当前进程都没有   android.permission.GRANT_RUNTIME_PERMISSIONS

这是预料之中的(否则将是一个大问题)。

问题

是否可以允许我的应用通过Android设置来管理其他应用的权限?
我正在寻找类似向应用程序授予USAGE_STATS权限的权限,该应用程序进入“设置”->“安全性”->“具有使用权限的应用程序”,但授予GRANT_RUNTIME_PERMISSIONS(和REVOKE_RUNTIME_PERMISSIONS)。

5 个答案:

答案 0 :(得分:2)

小米用户可能需要在开发者选项中启用设置。它被称为“USB 调试(安全设置)”,副标题是“允许通过 USB 调试授予权限和模拟输入”

答案 1 :(得分:2)

对于使用 MIUI 的用户:

我使用的是 MIUI 12.0.5 稳定版。在这个版本中 - 要运行任何授予权限的命令,我们必须首先从开发者选项中启用“USB 调试”和“USB 调试(安全设置)”,然后我们才能像这样通过 adb 执行权限命令一:

adb shell pm grant com.ivianuu.immersivemodemanager android.permission.WRITE_SECURE_SETTINGS

答案 2 :(得分:1)

您不能这样做。毫无疑问,Google绝对不允许您违反安全性。

您无法通过您的应用程序或仅使用adb命令来控制其他应用程序的权限

答案 3 :(得分:1)

我试图将BBS安装到我的Redmi Note 4 MIUI 10.1(不确定细节是否相关)。有同样的错误。然后我在开发人员选项的“ USB调试”主菜单下三行找到了一个菜单项。它叫做

USB调试(安全设置)

允许通过USB调试授予权限并模拟输入

尝试启用此选项会提示三个警告窗口,其中包含有关继续操作可能发生的可怕事情的信息。上次确认后(不确定电话是否已连接或我是否已连接),我跑了

adb -d shell pm grant packageName android.permission.BATTERY_STATS

但现在成功了。

答案 4 :(得分:0)

Developer Options中,向下滚动(一直滚动)直到找到Disable Permission Monitoring

并打开它。

现在pm命令应该出现了