如何解决使用 Runtime.getRuntime().exec 从系统应用程序通过“pm install...”安装 apk 的 Android 7+ 问题
我将 apk 安装到我的 Android 7.1.1 模拟器中的 /system/priv-app 文件夹中,因此它可以作为特权系统应用程序运行,但是当我尝试使用我的应用程序代码安装 apk 时
val runtime = Runtime.getRuntime()
val process = runtime.exec("pm install -r -f $apkFilePath")
process.waitFor()
val output = process.inputStream.bufferedReader().use { it.readText() }
val error = process.errorStream.bufferedReader().use { it.readText() }
在 error
输出中我得到
错误:java.lang.SecurityException:权限拒绝: runInstallCreate from pm 命令要求以用户 -1 身份运行,但正在调用 来自用户 0;这需要 android.permission.INteraCT_ACROSS_USERS_FULL
<uses-permission
android:name="android.permission.INteraCT_ACROSS_USERS_FULL"
android:protectionLevel="signatureOrSystem"
tools:ignore="ProtectedPermissions"
/>
但还是出现同样的错误。我什至试过
runtime.exec("pm install -r -f --user -1 $apkFilePath")
还是报同样的错误
试试这个代码有什么有趣的
runtime.exec("pm install -r -f --user 0 $apkFilePath")
那么 error
的输出会变成 NullPointerException
那么为什么 INteraCT_ACROSS_USERS_FULL
权限不起作用而 --user -1
也不起作用?我以为系统权限应用可以静默安装apk,那么问题出在哪里?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。