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

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

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

Ответ 1

Чтобы удалить определенные значения: SharedPreferences.Editor.remove(), за которым следует commit()

Чтобы удалить их все SharedPreferences.Editor.clear(), а затем commit()

Если вы не заботитесь о возвращаемом значении и используете его из основного потока приложения, используйте вместо него apply().

Ответ 2

Мое решение:

SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();

Ответ 3

Удаление всех настроек:

SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();

Удаление одного предпочтения:

SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();

Ответ 4

Если это не нужно удалять каждый раз, вы можете удалить его вручную:

Настройки → Приложения → Управление приложениями → (выберите приложение) → Очистить данные или Удалить

Новые версии Android:

Настройки → Приложения → (выберите ваше приложение) → Хранение → Очистить данные и Очистить кеш

Ответ 5

Удаление общих настроек Android в одной строке: -)

context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();

Или apply для неблокирующего асинхронного режима:

this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();

Ответ 6

Кажется, что все решения не полностью работают или не работают

чтобы очистить все SharedPreferences в Activity

      PreferenceManager.getDefaultSharedPreferences(getBaseContext()).
      edit().clear().apply();

Вызвать это из главной операции после onCreate

note * Я использовал

.apply()

вместо

.commit()

вы можете выбрать commit();

Ответ 7

Вы можете использовать оболочку adb, чтобы сделать это даже без корневого телефона. Единственный улов в том, что приложение должно быть отлаживаемым.

run-as <your package name> <command>

Например:

run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db

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

Ответ 8

Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();

Ответ 9

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

SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();

Ответ 10

Очистите их все:

PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()

Ответ 11

в определениях классов

private static final String PREFERENCES = "shared_prefs";

private static final SharedPreferences sharedPreferences  = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);

внутри класса

public static void deleteAllSharePrefs(){
        sharedPreferences.edit().clear().commit();
      }

Ответ 12

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

Ответ 13

По API 24 (нуга) вы можете просто:

context.deleteSharedPreferences("YOUR_PREFS");

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

context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply(); 

Ответ 14

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

adb shell pm clear <package name>

Ответ 15

  • Чтобы удалить определенное значение,

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

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

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

Ответ 16

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

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

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

https://github.com/farruhha/SimplePrefs

Ответ 17

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

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

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

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

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

Ответ 18

new File(context.getFilesDir(), fileName).delete();

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

Ответ 19

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

Допустим, вы используете 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();
    }
}

Ответ 20

ОБНОВЛЕНИЕ 2018:

Вы можете использовать PowerPreference

Чтобы удалить все данные из всех общих файлов настроек в приложении, используйте:

PowerPreference.clearAll()

Очистить файл по умолчанию

PowerPreference.getDefaultFile().clear()

Очистить конкретный файл по имени

PowerPreference.getFileByName(fileName).clear()

https://github.com/AliEsaAssadi/Android-Power-Preference

Ответ 21

Вы можете use-> preferences.edit().remove("key").commit(); удалить сохраненное значение из общих настроек.

Ответ 22

Самый быстрый способ сделать это, пока вы разрабатываете/тестируете, будет

adb uninstall

Пример: $ adb uninstall com.example.myappname

Ответ 23

Просто сделал это сегодня утром. В командной строке:

adb shell
cd /data/data/YOUR_PACKAGE_NAME/shared_prefs
rm * // to remove all shared preference files
rm YOUR_PREFS_NAME.xml // to remove a specific shared preference file

ПРИМЕЧАНИЕ. Для этого требуется внедренное устройство, такое как виртуальные устройства Android Android, устройство Genymotion или фактический корневой телефон/планшет и т.д.