设备所有者模式

用电脑设置一次后,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.chrome

ms 因手机而异。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,应用也可以照常卸载。要重新开启,从头再做一遍开启。

恢复出厂设置也会关闭此模式。