我跟踪这个教程将应用程序设置为设备所有者。在该教程中,有一节“使用亚行设置设备所有者”。这里的教程说,安装Kiosk Mode Demo App之后,运行以下命令:
adb shell dpm set-device-owner sdg.example.kiosk_mode/.AdminReceiver
这给了我一个错误:
adb server is out of date. killing...
* daemon started successfully *
java.lang.IllegalStateException: Not allowed to set the device owner because there are already several users on the device
at android.os.Parcel.readException(Parcel.java:1629)
at android.os.Parcel.readException(Parcel.java:1574)
at android.app.admin.IDevicePolicyManager$Stub$Proxy.setDeviceOwner(IDevicePolicyManager.java:5146)
at com.android.commands.dpm.Dpm.runSetDeviceOwner(Dpm.java:114)
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:257)
我跟踪了这个所以链接,迭戈·普拉辛西亚·劳拉的回答帮助我摆脱了
adb server is out of date. killing...
* daemon started successfully *
但是,在运行adb shell dpm set-device-owner sdg.example.kiosk_mode/.AdminReceiver
命令后仍会发生以下错误:
java.lang.IllegalStateException: Not allowed to set the device owner because there are already several users on the device
at android.os.Parcel.readException(Parcel.java:1629)
at android.os.Parcel.readException(Parcel.java:1574)
at android.app.admin.IDevicePolicyManager$Stub$Proxy.setDeviceOwner(IDevicePolicyManager.java:5146)
at com.android.commands.dpm.Dpm.runSetDeviceOwner(Dpm.java:114)
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:257)
为什么会发生此错误,以及如何删除此错误?我之前曾尝试过将不同的应用程序设置为设备所有者,但我认为我没有完全完成这些应用程序,而且在完成在设备上运行应用程序的整个过程时总是会出现一些错误。
发布于 2017-05-26 05:26:38
没有工厂重置设备,就有办法解决这个问题。只需从设备中删除所有帐户(在设置->帐户中)。在进行此操作之前,您可能希望同步数据,以便以后可以还原它们。删除所有帐户后,将手机连接到计算机并运行命令:
adb shell dpm set-device-owner sdg.example.kiosk_mode/.AdminReceiver
如果你收到这样的信息:
Success: Device owner set to package ComponentInfo{org.bluetooth.bledemo/org.bluetooth.bledemo.AdminReceiver}
Active admin set to component {org.bluetooth.bledemo/org.bluetooth.bledemo.AdminReceiver}
认为自己是成功的。现在,您可以将先前删除的所有帐户添加回去。
另一种方式:正如Steve在“答案”中指出的那样,工厂重置是将应用程序设置为设备所有者的方法之一,如果以前,您的手机有帐户(例如Gmail帐户)。但是在最近版本的Android和/或一些手机中,在完成工厂重置之后,它们不允许继续前进,除非您已经设置了google帐户。因此,为了解决这个问题,继续注册你的谷歌帐户,当你的手机恢复到正常的可操作状态时,通过进入设置->帐户删除该帐户。现在,您所需要的只是启用开发人员模式,然后进行USB调试。。之后,将您的手机连接到计算机并运行命令adb shell dpm set-device-owner sdg.example.kiosk_mode/.AdminReceiver
。
发布于 2017-05-24 17:11:29
这篇文章很好地概述了dpm命令:http://florent-dupont.blogspot.fr/2015/01/android-shell-command-dpm-device-policy.html
在帖子的末尾,添加了此更新:“设备所有者只能在未配置的设备上设置,除非它是由”adb“启动的,在这种情况下,如果没有与设备关联的帐户,我们允许它。”因此,在使用dpm命令之前,请确保您没有与当前用户集关联的任何帐户(如Gmail)。
我建议您的应用程序安装和设置为设备所有者使用dpm 后,执行工厂重置,通过谷歌向导不设置任何帐户,启用开发模式从设置,并最终启用"USB调试“.如果这对你来说是可行的选择..。
发布于 2021-01-03 20:12:04
我知道这是4年前的一篇文章,但我也有同样的问题,我不想做工厂数据重置,所以我点击了它,然后你会得到一个确认屏幕,显示你已经安装的所有内容和仍然登录的帐户,即使它们没有出现在accounts & backup下。
然后,你可以继续删除这些应用程序,你已经设置好了!
*在我的例子中,仍然登录的应用程序是reddit和zoho发票
https://stackoverflow.com/questions/44155652
复制相似问题