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

问题描述 投票:0回答:9

背景

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

pm grant packageName permissionName

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

问题

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

Operation not allowed: java.lang.SecurityException: grantRuntimePermission: 用户 2000 和当前进程都没有 android.permission.GRANT_RUNTIME_PERMISSIONS

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

问题

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

android adb android-permissions
9个回答
48
投票

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

并打开它。

现在

pm
命令应该可以工作了

我注意到他们将其更改为:

USB debugging (Security setting'

位置上移

它需要一个 sim


45
投票

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

USB调试(安全设置)

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

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

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

但现在成功了


11
投票

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


10
投票

MIUI用户:

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

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

9
投票

@elia-weiss here 的回答几乎对我有用。我还必须确保我授予的应用程序已停止。我刚刚在应用程序信息中使用了强制停止。


6
投票

Elia Weiss 提供的解决方案对我很有效。 (不幸的是,我没有足够的声誉来投票和评论)

打开“开发者选项”/“禁用权限监控”(在本节末尾)

这可能因 Android 版本和/或操作系统变体而异。

就我而言,它是 realme X2 全球变体上的 ColorOS 6.1 / Android 9。 (准确:操作系统版本 RMX1993EX_11_A15)


1
投票

你不能那样做。这是直接的安全漏洞,谷歌当然不会允许你。

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


0
投票

我通过将 usb 配置更改为“MIDI”来解决此问题,同时打开所有 usb 调试选项。


0
投票

转到开发人员选项,然后禁用“通过 USB 验证应用程序”

© www.soinside.com 2019 - 2024. All rights reserved.