原文作者:岛哥的质量效能笔记
原文链接:https://juejin.cn/post/6995906975477432357
背景
Android手机品牌和型号众多,特别是国产手机系统时常添加各种中国特色功能,因此其与设备管理员模式的兼容性或多或少存在一些问题,今天专门来讲讲我遇到的一些常见机型兼容性问题。
注意事项
设备管理员模式不需要反复连接电脑设置,只需要配置一次,重启或升级系统都没有影响。
但是在执行命令之前需要对手机进行一些设置,具体如下:
常见问题
问题1:提示 “Not allowed to … already several accounts on the device”
说明手机上的账户没有删干净,这时候需要注销手机上的所有账户,包括 Google 账号和系统自带的如小米账号、华为账号、OPPO/vivo账号等,另外索尼手机需要拔掉 SIM 卡重启。
问题2:提示 “Not allowed to … already several users on the device”
说明手机的多用户或应用双开没删干净或者关闭,请删除或关闭所有的多用户、访客模式以及应用双开。
问题3:提示 “Trying to set the device owner, but device owner is already set.”
说明手机已经设置了其他 APP 为设备管理员,一台手机上只能有一个设备管理员。
问题4:MIUI 用户提示 “Neither user xxx nor current process has android.permission.MANAGE_DEVICE_ADMINS”
这个时候需要手动在系统设置- 开发者设置里开启「USB 调试(安全设置)」,如果任然不可以,那么就关闭 MIUI 优化重试。
问题5:尝试完以上步骤还是无法设置DeviceOwner权限
但是在有些机型上即便重置了手机,发现还是设置不了DeviceOwner权限,那就说明这台手机存在隐藏账户或者用户了,这时候我们可以通过adb命令来获取手机账户信息从而查看设置不了权限的原因。
查看手机账户(Account):
adb shell dumpsys account
如果账户数目大于0,则请查看手机账户管理,是否有账户存在,存在的账户要退出或者删除;如果没有看到账户,那可能是隐藏账户,需要重置手机,然后再重新设置权限,如下图是重置手机后的结果:
查看手机用户(User):
adb shell dumpsys user
Android 6.0以后,设置DeviceOwner会检测手机里面user数目,如果大于1个则不能设置DeviceOwner权限。
问题6:手机重置之后仍然无法设置DeviceOwner权限
重置手机的时候需要注意,在系统初始化设置的时候,初始化界面上有一些选项(比如智能助手、智能桌面、用户体验计划等),能不选的就都别勾选,因为勾选了这些选项之后系统就会创建一个隐藏的账户。
问题7:提示:java.lang.IllegalStateException: Unexpected @ProvisioningPreCondition 99
这个问题暂时解决不了,据了解OPPO以及Realme 最新的几款机型已经修改了底层源码,不支持设置DeviceOwner了。
截至发稿,我已经在小米、红米、华为、荣耀、三星、魅族、一加、HTC、努比亚、vivo这几款主流机型上验证过了将近200个机型都是可以正常激活DeviceOwner权限的,另外早期的几款OPPO手机型号也是可以的。