【发布时间】:2021-03-11 11:20:52
【问题描述】:
我将 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:权限被拒绝: 来自 pm 命令的 runInstallCreate 要求以用户 -1 身份运行,但正在调用 来自用户 0;这需要 android.permission.INTERACT_ACROSS_USERS_FULL
我尝试在 Manifest 文件中添加权限
<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,那么问题出在哪里?
【问题讨论】:
-
你找到解决办法了吗?
标签: android command-line-interface system android-permissions android-sdk-tools