Очистка данных приложения владельца устройства
Я занимаюсь разработкой приложения для владельца устройства (которое устанавливается через QR-код). В одном сценарии мне нужно переключить пользователей, и это включает очистку всех данных, связанных с приложением, если приложение не было "приложением для владельца устройства". будет использовать Android
((ActivityManager) m_context.getSystemService(Context.ACTIVITY_SERVICE)).clearApplicationUserData();
но так как это "приложение владельца устройства", я получаю следующую ошибку:
java.lang.SecurityException: не удается очистить данные для защищенного пакета
Существуют ли другие API / подходы для очистки данных для приложения владельца устройства?
1 ответ
Вы можете очистить свои данные "сложным путем", удалив файлы, которые вы создали, или очистив их содержимое.
Вы можете проверить часть внутреннего хранилища вашего приложения через диспетчер файлов устройств Android Studio или adb shell
, чтобы увидеть, есть ли другие файлы, которые нужно удалить, которые вы не создавали напрямую (например, из WebView
).
Вы можете попробовать это, если вы являетесь владельцем устройства на устройстве Android 9 Pie (требуется SDK 28):
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)
Но я думаю, что это предназначено для очистки данных о других приложениях.
Можете ли вы объяснить, почему вам нужно удалить данные из приложения владельца устройства на переключателе пользователя? Может быть другой способ сделать то, что вам нужно, так как вы все равно переключаетесь на вторичного пользователя. Моим реализациям просто нужно было создать / удалить пользователей (до эфемерных пользователей), а затем настроить пользователя с помощью API-интерфейсов AE и их приложений через управляемые конфигурации.