gpt4 book ai didi

android - 使用 Runtime.exec(...) 运行 dpm

转载 作者:太空狗 更新时间:2023-10-29 14:08:51 25 4
gpt4 key购买 nike

This answer建议 Android 应用可以像这样运行 dpm:

Runtime.getRuntime().exec("dpm set-device-owner com.test.my_device_owner_app");

这在运行 5.1.1 的 Nexus 4 上静默失败。 shell 返回错误代码 0(成功)并且没有控制台输出。尽管取得了明显的成功,但我的应用程序并未成为设备所有者。设备刚刚恢复出厂设置,没有配置用户帐户。

作为对照,我尝试运行垃圾命令而不是 dpm。它按预期失败了。

这有用吗?它是故意削弱的吗?

最佳答案

当命令语法错误时,

dpm 会错误地退出,状态代码为 0。正确的语法是 dpm set-device-owner package/.ComponentName。当语法正确时,exec(...) 会抛出一个 SecurityException:

java.lang.SecurityException: Neither user 10086 nor current process has android.permission.MANAGE_DEVICE_ADMINS.
at android.os.Parcel.readException(Parcel.java:1546)
at android.os.Parcel.readException(Parcel.java:1499)
at android.app.admin.IDevicePolicyManager$Stub$Proxy.setActiveAdmin(IDevicePolicyManager.java:2993)
at com.android.commands.dpm.Dpm.runSetDeviceOwner(Dpm.java:110)
at com.android.commands.dpm.Dpm.onRun(Dpm.java:82)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
at com.android.commands.dpm.Dpm.main(Dpm.java:38)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249)

将此权限添加到 list 中没有帮助,所以它可能是仅限系统的权限。

在没有 NFC 的设备上部署 kiosk 模式应用程序已经很麻烦了,因为您必须启用开发人员模式并通过 adb 安装应用程序。我想供应商只需要手动运行 dpm

关于android - 使用 Runtime.exec(...) 运行 dpm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30674921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com