Ste*_*ano 3 android adb android-permissions
背景
我正在尝试创建一个可以授予和撤消其他应用程序权限的应用程序。
为此,我使用adb命令:
pm grant packageName permissionName
Run Code Online (Sandbox Code Playgroud)
如果我通过具有root权限的shell调用它,则效果很好。
问题
问题是,当我在没有root权限的情况下调用此命令时,会收到
不允许的操作:java.lang.SecurityException:grantRuntimePermission:用户2000或当前进程都没有android.permission.GRANT_RUNTIME_PERMISSIONS
这是可以预料的(否则将是一个大问题)。
题
是否可以允许我的应用通过Android设置管理其他应用的权限?
我正在寻找类似向应用程序授予USAGE_STATS权限的权限,这些应用程序进入设置->安全性->“具有使用权限的应用程序”,但针对GRANT_RUNTIME_PERMISSIONS(和REVOKE_RUNTIME_PERMISSIONS)。
Eli*_*iss 20
在 中Developer Options,向下滚动(一直)直到找到Disable Permission Monitoring
并打开它。
现在pm命令应该可以工作
我注意到他们将其更改为:
USB debugging (Security setting'
和位置上移
它需要一个sim
小智 12
对于使用 MIUI 的用户:
我使用的是 MIUI 12.0.5 稳定版。在这个版本中 - 要运行任何授予权限的命令,我们必须首先从开发人员选项中启用“USB 调试”和“USB 调试(安全设置)”,只有之后我们才能通过 adb 执行权限命令,如下所示一:
adb shell pm grant com.ivianuu.immersivemodemanager android.permission.WRITE_SECURE_SETTINGS
Run Code Online (Sandbox Code Playgroud)
小智 10
我试图将BBS安装到我的Redmi Note 4 MIUI 10.1(不确定细节是否相关)。有同样的错误。然后我在开发人员选项的“ USB调试”主菜单下三行找到了一个菜单项。它被称为
USB调试(安全设置)
允许授予权限并通过USB调试模拟输入
尝试启用此选项会提示三个警告窗口,其中包含有关继续操作可能发生的可怕事情的信息。上次确认后(不确定电话是否已连接或我已连接电话),我跑了
adb -d shell pm grant packageName android.permission.BATTERY_STATS
Run Code Online (Sandbox Code Playgroud)
但现在成功了。
Elia Weiss 提供的解决方案对我有用。(不幸的是我没有足够的声誉来投票和评论)
打开“开发者选项”/“禁用权限监控”(在本节末尾)
这可能会有所不同,具体取决于 Android 版本和/或操作系统变体。
就我而言,它是 realme X2 全局变体上的 ColorOS 6.1 / Android 9。(确切地说:操作系统版本RMX1993EX_11_A15)
要授予应用程序权限,您基本上需要:
\nDeveloper Options->USB debuggingDeveloper Options-> Disable Permission Monitoring(这不是在第一个选项旁边,而是在“应用程序”区域中一直向下)adb:PS C:\\adb-tools> ./adb devices\n* daemon not running; starting now at tcp:5037\n* daemon started successfully\nList of devices attached\n93c53934 device\nRun Code Online (Sandbox Code Playgroud)\nPS D:\\adb-tools> ./adb shell\nOnePlus8Pro:/ $ am force-stop com.conena.logcat.reader\nOnePlus8Pro:/ $ pm grant com.conena.logcat.reader android.permission.READ_LOGS\nRun Code Online (Sandbox Code Playgroud)\n附加提示:
\n