我正在开发device owner app(通过QR代码安装)。在一种情况下,我需要切换用户,并且涉及清除与该应用程序相关的所有数据(如果该应用程序不是“设备所有者应用”,我将使用android
((ActivityManager) m_context.getSystemService(Context.ACTIVITY_SERVICE)).clearApplicationUserData();
但是由于它是“设备所有者应用”,因此出现以下错误:
java.lang.SecurityException:无法清除受保护程序包的数据
是否还有其他api /方法来清除设备所有者应用程序的数据?
答案 0 :(得分:1)
您可以通过删除创建的文件或清除其内容来“困难地”清除数据。
您可能想通过Android Studio的设备文件管理器或adb shell
检查应用程序的内部存储部分,以查看是否有其他需要清除的文件不是您直接创建的(例如,从{ {1}}。
答案 1 :(得分:0)
如果您是Android 9 Pie设备的设备所有者(需要SDK 28),可以尝试this:
DevicePolicyManager mDPM = (DevicePolicyManager)
this.getSystemService(Context.DEVICE_POLICY_SERVICE);
Componentname mDeviceAdminRcvr =
new ComponentName(this, YourDeviceAdminReceiver.class);
mDPM.clearApplicationUserData(
mDeviceAdminRcvr,
String packageName,
Executor executor,
DevicePolicyManager.OnClearApplicationUserDataListener listener)
但是我认为这是为了清除其他应用程序上的数据。
您能解释一下为什么需要在用户开关上清除设备所有者应用程序中的数据吗?可能还有另一种方法可以做您需要做的事情,因为无论如何您都将切换到辅助用户。我的实现只需要创建/删除用户(临时用户之前),然后通过托管配置使用AE API及其应用来配置用户。