Невозможно очистить данные приложения с помощью ADB Espresso - PullRequest
0 голосов
/ 16 ноября 2018

Невозможно очистить данные приложения с помощью следующего метода, я использую корневое устройство, API 19.

public static void clearAppData() {

        try {
            Process su = Runtime.getRuntime().exec("su");
            DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

            outputStream.writeBytes(pm clear com.xxx.xxx.xxx);
            outputStream.flush();

            outputStream.writeBytes("exit\n");
            outputStream.flush();
            su.wait(2000);
        } catch (Exception e) {
            Log.e("Set Time", e.getMessage());
        }
    }

Я вызываю вышеуказанный метод в моем тесте, но он не может очистить кэш.Я сделал то же самое для изменения времени устройства, и оно работает

Вызов вышеупомянутого метода в следующем тесте:

@Test
    public void a_test() {


        CommonUtil.clearAppData();

        CommonUtil.changetime();

        CommonUtil.pausetime(5000);

}

1 Ответ

0 голосов
/ 16 ноября 2018

Это сработало со следующим решением, пропустило команду adb и создало следующий метод

public static void clearSharedPrefs(Context context) {
        SharedPreferences sharedPreferences = context.
                getSharedPreferences(KEY_SP_PACKAGE, Context.MODE_PRIVATE);
//  sharedPreferences.edit().remove("KEY").commit(); //Remove Key
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.clear();
        editor.commit();
    }
...