Очистка данных приложения владельца устройства - PullRequest
0 голосов
/ 02 января 2019

Я разрабатываю приложение для владельцев устройств (которое устанавливается с помощью QR-кода). В одном сценарии мне нужно переключить пользователей, что включает в себя очистку всех данных, связанных с приложением, если приложение было не "приложение владельца устройства" Я бы использовал Android

((ActivityManager) m_context.getSystemService(Context.ACTIVITY_SERVICE)).clearApplicationUserData();

но так как это «приложение для владельца устройства», я получаю следующую ошибку:

java.lang.SecurityException: невозможно очистить данные для защищенного пакета

Существуют ли другие API / подходы для очистки данных для приложения владельца устройства?


Обновление:

Благодаря @ CommonsWare Я позвонил context.deleteDatabase("db_name") всем БД и очистил все SharedPreferences, как этот

    SharedPreferences.Editor editor = preferences.edit();
    editor.clear();
    return editor.commit();

И этого было достаточно ...

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Вы можете очистить ваши данные «трудным путем», удалив созданные вами файлы или очистив их содержимое.

Возможно, вы захотите проверить часть внутреннего хранилища вашего приложения с помощью диспетчера файлов устройств Android Studio или adb shell, чтобы выяснить, есть ли другие файлы, которые необходимо удалить, которые вы не создавали напрямую (например, из WebView) ).

0 голосов
/ 05 января 2019

Вы можете попробовать это , если вы являетесь владельцем устройства на устройстве 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 и их приложений через управляемые конфигурации.

...