Skip to content

DeviceOwner设置

  • 设备管理员模式不需要反复连接电脑设置,只需要配置一次,重启或升级系统都没有影响。

  • 申请命令

shell
adb shell dpm set-device-owner --user 0 'com.byyoung.setting/utils.DeviceAdminUtils.MyDeviceAdminReceiver'
  • 移除命令
shell
adb shell dpm remove-active-admin com.byyoung.setting/utils.DeviceAdminUtils.MyDeviceAdminReceiver

设置准备须知

  • 双开与设备管理员不可兼容,卡系统BUG可以绕过
  • 小米用户需要开启USB 调试(安全设置)关闭MIUI 优化
  • 所有手机进入设置 - 帐户,删除所有的帐户,包括你的 Google小米、华为、OPPO、vivo等系统帐号(像OPPO和vivo这样安装需要登录账户的可以之后再登录回来)
  • 如果你之前设置过多用户或开启过手机自带的访客模式、应用双开等,也需要一并关闭或删除(之后可以再打开)

设备管理员用途

可能遇到的问题列表

  1. Not allowed to set the device owner because there are already some accounts on the device,Not allowed to … already several accounts on the device
  • 存在多账号ADB辅助:在激活 DeviceOwner 时,是不允许存在任何账户的,说明手机上的账户没有删干净,这时候需要注销手机上的所有账户,包括 Google 账号和系统自带的如小米账号、华为账号、OPPO/vivo账号等,另外索尼手机需要拔掉 SIM 卡重启。
  1. Not allowed to set the device owner because there are already some users on the device.
  • 存在多用户ADB辅助:说明手机的多用户或应用双开没删干净或者关闭,请删除或关闭所有的多用户、访客模式以及应用双开。
  1. Trying to set the device owner, but device owner is already set.
  • 说明手机已经设置了其他 APP 为设备管理员,一台手机上只能有一个设备管理员。
  1. MIUI 用户提示 “Neither user xxx nor current process has android.permission.MANAGE_DEVICE_ADMINS”
  • 这个时候需要手动在系统设置- 开发者设置里开启USB 调试(安全设置),如果任然不可以,那么就关闭 MIUI 优化重试。
  1. @ProvisioningPreCondition 99.
  • OPPO仅允许白名单内的应用、测试签名应用激活设备所有者,可使用 Dhizuku 自签名后再接管激活。

授权无输出,卡死

机型问题,一般是帐号没有退出干净/用户没有操作干净,参考可能遇到的问题列表

adb操作

  1. 查看手机账户(Account)
shell
adb shell dumpsys account
  • 输出内容,必须为Accounts: 0才行,如果账户数目大于0,则请查看手机账户管理,是否有账户存在,存在的账户要退出或者删除;如果没有看到账户,那可能是隐藏账户,需要尝试根据类名卸载对应软件/重置手机,然后再重新尝试!
txt
User UserInfo{0:杨:4c13}:
  Accounts: 5
    Account {name=*** , type=tw.nekomimi.nekogram}
    Account {name=xiao***mail.com, type=com.google}
    Account {name=***, type=com.tencent.android.qqdownloader.YYBLiveAccountProvider.account}
    Account {name=q***k, type=quark.account}
    Account {name=xiao***tlook.com, type=ai.x.grok}

占位符

  1. 查看手机用户(User)
shell
adb shell  pm list users
  • 输出内容,必须只留下UserInfo{0:***:4c13} running才行,推荐先进系统里面关闭移除,使用命令移除可能导致无法使用分身,必须恢复出厂设置!
txt
  Users:
    UserInfo{0:***:4c13} running
    UserInfo{10:测试:400} running
  • 移除用户
shell
adb shell pm remove-user id

注意事项

  • 注意:只需要移除用户ID为0之外的用户
  • 警告:被移除的用户空间下的应用会被卸载
  • 演示:adb shell pm remove-user 10
  • 系统移除:github

附语

  • Android 6.0以后,设置DeviceOwner会检测手机里面user数目,如果大于1个则不能设置DeviceOwner权限。

  • 问题9:手机重置之后仍然无法设置DeviceOwner权限

  • 重置手机的时候需要注意,在系统初始化设置的时候,初始化界面上有一些选项(比如智能助手、智能桌面、用户体验计划等),能不选的就都别勾选,因为勾选了这些选项之后系统就会创建一个隐藏的账户。
  • 截至发稿,已经在小米、红米、华为、荣耀、三星、魅族、一加、HTC、努比亚、vivo这几款主流机型上验证过了将近200个机型都是可以正常激活DeviceOwner权限的,另外早期的几款OPPO手机型号也是可以的。

摘录语雀原文档