Удаление общих настроек - PullRequest
       28

Удаление общих настроек

441 голосов
/ 10 сентября 2010

Как удалить данные SharedPreferences для моего приложения?

Я создаю приложение, которое использует множество веб-сервисов для синхронизации данных. В целях тестирования мне нужно стереть некоторые значения SharedPreferences при перезапуске приложения.

Ответы [ 23 ]

6 голосов
/ 30 июня 2016

Попробуйте этот код:

SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
5 голосов
/ 11 сентября 2017

Начиная с API 24 (нуга) вы можете просто:

context.deleteSharedPreferences("YOUR_PREFS");

Однако обратной совместимости нет, поэтому, если вы поддерживаете что-то меньше 24, придерживайтесь:

context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply(); 
5 голосов
/ 19 сентября 2014

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

4 голосов
/ 06 апреля 2018

Если это для вашего тестирования. Вы можете использовать команды adb.

adb shell pm clear <package name>
3 голосов
/ 17 августа 2018

Чтобы удалить пары ключ-значение из предпочтения, вы можете легко сделать следующее

getActivity().getSharedPreference().editor().remove("key").apply();

Я также разработал библиотеку для удобного управления общими настройками. Вы можете найти следующую ссылку

https://github.com/farruhha/SimplePrefs

3 голосов
/ 27 декабря 2017
  • Чтобы удалить определенное значение,

SharedPreferences.Editor remove (String key) с последующим коммитом () или apply ()

  • Чтобы удалить все значения,

    SharedPreferences.Editor clear () , за которым следует commit () или apply ()

2 голосов
/ 08 марта 2019
String prefTag = "someTag";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
prefs.edit().remove(prefTag).commit();

Это удалит сохраненные общие настройки с именем «someTag».

2 голосов
/ 16 декабря 2016

Чтобы централизованно очистить все SharedPreferences из любого класса:

public static SharedPreferences.Editor getEditor(Context context) {
    return getPreferences(context).edit();
}

Затем из любого класса: (Commit возвращает Boolean, где вы можете проверить, очищены ли ваши настройки или нет)

        Navigation.getEditor(this).clear().commit();

Или: вы можете использовать Apply: он возвращает void . Navigation.getEditor (это) .clear () применяется ();

1 голос
/ 07 февраля 2019

Ни один из ответов не работает для меня, так как у меня много общих ключей настроек.

Допустим, вы запускаете тест Android вместо модульного теста.

Это работает для меня цикли удалите все файлы shared_prefs .

@ BeforeClass будет запущен перед всеми тестами и ActivityTestRule

@BeforeClass
public static void setUp() {
    Context context = InstrumentationRegistry.getTargetContext();

    File root = context.getFilesDir().getParentFile();
    String[] sharedPreferencesFileNames = new File(root, "shared_prefs").list();
    for (String fileName : sharedPreferencesFileNames) {
        context.getSharedPreferences(fileName.replace(".xml", ""), Context.MODE_PRIVATE).edit().clear().commit();
    }
}
0 голосов
/ 08 января 2019
new File(context.getFilesDir(), fileName).delete();

Я могу удалить файл в общих настройках вместе с ним

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...