【发布时间】:2018-08-02 05:32:00
【问题描述】:
我是来自更多 c++ 背景的 Java 和 Android 开发新手。我使用this question 作为指导创建了一个 Kiosk/COSU 应用程序。我使用
将应用设置为设备管理员adb shell dpm set-device-owner ...../.AppAdminReceiver
我想在不将设备恢复出厂设置的情况下禁用活跃的设备所有者。我已经尝试以编程方式使用this之类的问题
和其他一些,但它似乎不起作用。代码执行,但应用程序仍然是设备所有者。我也尝试将android:testOnly="true" 添加到AndroidManifest.xml,然后使用adb shell dpm remove-active-admin ...../.AppAdminReceiver,如here 所示,但出现错误
java.lang.SecurityException: Attempt to remove non-test admin ComponentInfo{....AppAdminReceiver} 0。
上一个链接中描述的方法似乎在我正在为其构建应用程序的操作系统 Android Oreo 中已弃用。
如何在 Oreo 中删除设备所有者?我不介意是通过 adb 还是以编程方式完成,只要我不需要将设备恢复出厂设置即可。
【问题讨论】:
-
设备所有者和设备管理员是两个不同的东西。 AFAIK 设备所有者只能在出厂重置设备上设置。设备管理员可以在设置中删除。如果要取消设备管理员,则需要将手机恢复出厂设置。除非手机已经root(我认为)
-
如果我对它是设备所有者和设备管理员有歧义,我深表歉意。我在问题中使用的命令似乎表明该应用程序被设置为设备所有者。但是,我能够通过 Android Studio 终端使用 adb 执行此命令,而不是设置为出厂重置。作为设备所有者,我还有什么可以尝试删除该应用程序的吗?我还更新了我的问题以使用设备所有者而不是管理员。
-
@KrzysztofKubicki 是的,我有。如上所述,它执行但似乎没有触发任何东西。似乎这在 API 26 中已被弃用。