Android 14调用DevicePolicyManager.wipeData()抛异常的解决方案咨询
Android 14 设备所有者应用数据擦除解决方案
问题背景
在设备所有者应用中使用DevicePolicyManager执行带数据擦除的硬重置操作,此前版本运行正常,但在Android 14中抛出异常:User 0 is a system user and cannot be removed,尝试更换不同标志位后问题仍未解决。
原代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { mDevicePolicyManager.wipeData(DevicePolicyManager.WIPE_RESET_PROTECTION_DATA) } else mDevicePolicyManager.wipeData(0)
解决方案
Android 14对设备所有者调用wipeData的行为新增限制:系统用户(User 0)无法被移除,原代码逻辑会触发移除用户的操作,导致抛出异常。需调整标志位,明确执行工厂重置而非移除用户:
修改后的代码如下:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14及以上,使用WIPE_FACTORY_RESET执行标准工厂重置 mDevicePolicyManager.wipeData(DevicePolicyManager.WIPE_FACTORY_RESET); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { mDevicePolicyManager.wipeData(DevicePolicyManager.WIPE_RESET_PROTECTION_DATA); } else { mDevicePolicyManager.wipeData(0); }
关键说明
WIPE_FACTORY_RESET是Android 14新增的标志,明确指示执行标准工厂重置流程,不会触发移除系统用户的操作,从而规避异常。- 需确保应用已获取
DEVICE_ADMIN权限,且已正确注册为设备所有者,否则操作仍会执行失败。
内容的提问来源于stack exchange,提问作者adden00
相关产品推荐
相关产品推荐

