设备所有者模式
用电脑设置一次后,clear_data 不打开系统设置,直接清除应用数据。本页说明如何开启、确认、关闭,以及需要付出的代价。
本页为译文。如与英文版不一致,以英文版为准。 English
普通应用无法直接清除其他应用的数据,所以不在这个模式时,clear_data 会返回 NO_PERMISSION,权限为 device_owner。你仍然可以用点击设置应用按钮的清除数据示例来清除,但它需要几秒钟,期间屏幕上会显示设置应用,而且要按你手机上的按钮文字调整。
把 Droidline 设为手机的设备所有者(Device Owner)后,这个限制就没有了:Android 允许设备所有者应用清除其他应用的数据。clear_data 会直接清除,不碰屏幕。
这个模式是可选的。不开启它,Droidline 的其他功能也完全照常工作。
有什么变化
| 默认 | 设备所有者模式 | |
|---|---|---|
clear_data | 返回 NO_PERMISSION(device_owner);请改用设置应用示例 | 直接清除,不显示界面 |
| 无障碍服务 | 设置应用示例需要 | clear_data 不需要 |
| 像 Chrome 这样显示管理空间的应用 | 设置应用示例无法清除 | 可以清除 |
| 卸载 Droidline | 照常可以 | 关闭此模式前无法卸载 |
其他命令不受影响。Droidline 不使用设备所有者的其他能力,例如策略或安装限制。
适合什么情况
- 在一排测试手机上频繁清除应用数据。
- 连设置应用短暂出现都会造成干扰。
- 设置应用示例与厂商的设置应用对不上。
个人手机没必要开启;下面的条件会让准备工作比较麻烦。
开始之前
- Android 9 或更高版本。
- 手机上已安装 Droidline 应用。
- 电脑上有
adb,它包含在 Android SDK Platform-Tools 中。只在设置时用一次。 - 手机上不能有任何账号。 不只是 Google 账号,设置 → 账号里列出的所有账号都算,比如 Telegram、三星账号。这是 Android 的规定。设置完成后可以再把账号加回来。
- 只能有一个用户。请先删除访客、其他用户和工作资料。
如果删除账号不方便,最简单的办法是恢复出厂设置,在添加任何账号之前完成设置。
开启
1. 开启 USB 调试。 在设置 → 关于手机里连续点击版本号七次,打开开发者选项,然后在其中开启 USB 调试。
2. 用 USB 连接手机,并在手机弹出的提示中点击允许。 确认已连接:
adb devices
3. 把 Droidline 设为设备所有者。
adb shell dpm set-device-owner dev.droidline.agent/.admin.DroidAdminReceiver
成功时会输出:
Success: Device owner set to package dev.droidline.agent/.admin.DroidAdminReceiver
Active admin set to component dev.droidline.agent/.admin.DroidAdminReceiver
4. 收尾。 现在可以关闭 USB 调试。把之前删除的账号加回来。
确认
打开手机上的 Droidline 应用,查看状态标签页底部,会有设备所有者模式一栏。只有模式开启时才会显示。
也可以对一个可以重置的应用调用 clear_data。它会返回耗时,而不是 NO_PERMISSION:
print(d.clear_data("com.android.chrome"))
# {'ms': 915}console.log(await d.clearData("com.android.chrome"));
// { ms: 915 }Console.WriteLine(await d.ClearDataAsync("com.android.chrome"));
// {"ms":915}droidline --json clear_data com.android.chromems 因手机而异。Droidline 不能用这种方式清除自己的数据,因为那样会连配对信息一起删掉;这样调用会返回 BAD_ARGS。
第 3 步失败时
| 信息中出现 | 含义 | 解决方法 |
|---|---|---|
already some accounts on the device | 手机上还有账号 | 在设置 → 账号中删除所有账号后重试 |
already several users on the device | 存在其他用户或工作资料 | 删除其他用户和工作资料后重试 |
device owner is already set | 已有其他应用是设备所有者 | 公司管理的手机无法使用此模式;否则在那个应用中解除 |
Unknown admin | 应用未安装,或是没有此功能的旧版本 | 安装最新版 Droidline 应用 |
关闭
在手机上的 Droidline 应用中打开状态标签页,找到设备所有者模式,点击关闭并确认。之后 clear_data 会重新返回 NO_PERMISSION,应用也可以照常卸载。要重新开启,从头再做一遍开启。
恢复出厂设置也会关闭此模式。