Удаление общих настроек
Как удалить данные 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 или фактический корневой телефон/планшет и т. д.