Удаление общих настроек
Как удалить данные SharedPreferences для моего приложения?
Я создаю приложение, которое использует веб-сервисы для синхронизации данных. Для целей тестирования мне нужно стереть некоторые значения SharedPreferences при перезапуске приложения.
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(); }
вы также можете просто вручную удалить приложение с помощью вашего устройства. Затем, когда вы переустановите свое приложение, общие настройки будут сброшены.
по состоянию на 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(это).четкий.)(применить();
чтобы удалить пары ключевых значений из предпочтения, вы можете легко сделать следующее
getActivity().getSharedPreference().editor().remove("key").apply();Я также разработал библиотеку для легкого манипулирования общими предпочтениями. Вы можете найти следующую ссылку
вы можете
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 или фактический корневой телефон/планшет и т. д.