我按照这个tutorial设置应用程序为设备所有者。在那个教程中,有一节“使用adb设置设备所有者”。这里的教程说,安装Kiosk模式演示应用程序后,运行以下命令:
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)
我遵循这个SO link和迭戈Plascencia劳拉的答案帮助我摆脱
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)
为什么会发生这个错误,我如何才能删除这个错误?我早些时候曾尝试将不同的应用程序设置为设备所有者,但我认为我没有设法完全关闭它们,在完成让应用程序在设备上运行的整个过程时总是出现一些错误。
7条答案
按热度按时间nzkunb0c1#
有一种方法可以解决这个问题,而不需要出厂重置设备。只需从设备中删除所有帐户(在设置-〉帐户)。您可能需要在此之前同步数据,以便稍后可以恢复它们。删除所有帐户后,将手机连接到计算机并运行命令:
adb shell dpm set-device-owner sdg.example.kiosk_mode/.AdminReceiver
如果您收到这样的消息:
现在您可以添加以前删除的所有帐户了。
另一种方式正如Steve Miskovetz在回答中所指出的,如果以前您的手机有帐户,恢复出厂设置是将应用程序设置为设备所有者的方法之一(eidergy. Gmail账户).但是在最近版本的Android和/或一些手机中,在做了出厂重置之后,它们不允许前进,除非你已经设置了谷歌账户,所以,为了解决这个问题,继续注册你的谷歌账户,当你的手机恢复正常运行状态时,通过设置-〉账户删除该账户。现在你所需要的就是enable developer mode and then USB debugging。之后将你的手机连接到电脑并运行命令
adb shell dpm set-device-owner sdg.example.kiosk_mode/.AdminReceiver
。jfgube3f2#
这篇文章对dpm命令进行了很好的概述:http://florent-dupont.blogspot.fr/2015/01/android-shell-command-dpm-device-policy.html
在文章快结束的时候,添加了以下更新:“* 设备所有者只能在未配置的设备上设置,除非它是由“adb”启动的,在这种情况下,如果没有帐户与设备关联,我们将允许它。”源代码说。因此,在使用dpm命令之前,请确保您没有任何帐户(如Gmail)与您当前的用户集关联 *”
我建议安装和设置您的应用程序作为设备所有者使用dpm后执行出厂重置,通过谷歌向导没有设置任何帐户,从设置启用开发者模式,最后启用“USB调试”...如果这是一个可行的选择为您...
pgky5nke3#
我做了类似@user2572085,删除所有帐户后,仍然有一个帐户剩余,可以找到与
adb shell dumpsys account
,我试图卸载相应的应用程序,但没有帮助。最后,原来是旧版本的应用程序使用帐户,但新的一个没有,所以卸载当前版本的应用并没有删除账号,然后我安装了一个旧版本的应用,结果帐户再次出现在设置中,我可以从那里删除它。之后我可以运行adb shell dpm set-device-owner
mzsu5hc04#
我知道这是一个职位从4年前,但我有同样的问题,我不想做一个工厂数据重置,所以我点击了,然后你会得到一个确认屏幕显示一切,你已经安装和帐户仍然登录,即使他们没有显示在帐户和备份.
然后你就可以开始释放这些应用程序了!
cetgtptt5#
模拟器也有同样的问题。然后从Android Studio的AVD管理器,我右键单击设备-〉擦除数据。
6qftjkof6#
按照以下说明解决问题:
1.删除设置-〉帐户中的所有帐户
1.使用以下命令:
adb shell dumpsys account
(它将列出所有帐户仍然没有列出之前,卸载所有应用程序)1.再试一次
yks3o0rb7#
在我的例子中,在硬重置之后,设备仍然向我显示一个异常:
原因是里面的SIM卡...把它关掉重新启动,它应该能工作。