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


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

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

20 392

20 ответов:

удалить определенные значения: SharedPreferences.Редактор.удалить() затем commit()

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

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

мое решение:

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

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

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();

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

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

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

настройки - > приложения - > (выберите приложение) - > хранение - > Очистить данные и очистить кэш

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

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

или apply для неблокирующей асинхронной работы:

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

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

чтобы очистить все SharedPreferences в действии

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

вызовите это из основной деятельности после onCreate

примечание* Я

.apply()

вместо

.commit()

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

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

run-as <your package name> <command>

например:

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

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

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

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

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

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

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();
      }

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

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

// очистить их все

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

context.deleteSharedPreferences("YOUR_PREFS");

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

context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply(); 
  • чтобы удалить определенное значение,

SharedPreferences.Редактор удалить (строковый ключ) с последующим commit() или apply ()

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

    SharedPreferences.Очистить редактор() с последующим commit() или apply ()

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

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

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

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

или: вы можете использовать применить: он возвращает void Навигация.getEditor(это).четкий.)(применить();

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

adb shell pm clear <package name>

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

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

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

https://github.com/farruhha/SimplePrefs

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

только что сделал это сегодня утром. Из командной строки:

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 на складе, устройство Genymotion или фактический корневой телефон/планшет и т. д.

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

adb uninstall

пример: $ adb uninstall com.образец.myappname