android 如何使用adb授予权限而不需要root?

mzmfm0qo  于 2023-05-05  发布在  Android
关注(0)|答案(9)|浏览(987)

背景

我正在尝试创建一个可以授予和撤销其他应用的权限的应用。
为此,我使用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)。

a2mppw5e

a2mppw5e1#

Developer Options中,向下滚动(一直)直到找到Disable Permission Monitoring
打开它
现在pm命令应该可以工作了
我注意到他们把它改成了:USB debugging (Security setting'
地点也提前了
需要SIM卡

wvyml7n5

wvyml7n52#

我试图将BBS安装到我的Redmi Note 4,MIUI 10.1(不确定是否有相关细节)。得到同样的错误。然后我发现一个菜单项三行以下的主要'USB调试'菜单中的开发者选项。它叫做

USB调试(安全设置)

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

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

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

但现在它成功了

yhuiod9q

yhuiod9q3#

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

qyzbxkaa

qyzbxkaa4#

对于使用MIUI的用户:
MIUI 12.0.5稳定版在这个版本中-要运行任何授予权限的命令,我们必须首先从开发人员选项中启用“USB调试”和“USB调试(安全设置)”,只有在此之后,我们才能够通过adb执行权限命令,如下图所示:

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

wz3gfoph5#

来自@elia-weiss here的答案几乎对我起了作用。我还必须确保我授予的应用程序被停止。我刚刚在应用程序信息中使用了强制停止。

mrfwxfqh

mrfwxfqh6#

Elia韦斯提供的解决方案对我很有效。(可惜我没有足够的声誉来支持和评论)
打开“开发者选项”/“禁用权限监控”(在本节末尾)
这可能因Android版本和/或操作系统变体而异。
在我的情况下,它是ColorOS 6.1 / Android 9上的realme X2全局变体。(准确:操作系统版本RMX1993EX_11_A15)

hc8w905p

hc8w905p7#

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

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

64jmpszr

64jmpszr8#

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

vyu0f0g1

vyu0f0g19#

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

相关问题