Ответы:
Чтобы удалить определенные значения: SharedPreferences.Editor.remove (), а затемcommit()
Чтобы удалить их все, SharedPreferences.Editor.clear()
а затемcommit()
Если вас не волнует возвращаемое значение, и вы используете его из основного потока вашего приложения, рассмотрите возможность его использования apply()
.
Мое решение:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
"text"
.
Удаление всех настроек:
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();
KeyName
?
Если нет необходимости удалять каждый раз, вы можете удалить его вручную из:
Настройки -> Приложения -> Управление приложениями -> (выберите приложение) -> Очистить данные или удалить
Новые версии 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
В качестве альтернативы, вы можете просто сделать выше, но без команды, которая направит вас к корню пакета приложения и позволит вам выполнять больше команд в контексте приложения.
run-as
. Вы могли бы подумать, что я нашел бы это через 3 года ...
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
Очистить их все:
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
Вы также можете просто вручную удалить приложение, используя ваше устройство. Затем при переустановке приложения общие настройки были сброшены.
В определениях классов:
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
Внутри класса:
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().commit();
}
Попробуйте этот код:
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
SharedPreferences.Editor remove (String key), за которым следует commit () или apply ()
Чтобы удалить все значения,
SharedPreferences.Editor clear (), за которым следует commit () или apply ()
Чтобы удалить пары ключ-значение из предпочтения, вы можете легко сделать следующее
getActivity().getSharedPreference().editor().remove("key").apply();
Я также разработал библиотеку для удобного управления общими настройками. Вы можете найти следующую ссылку
Чтобы централизованно очистить все SharedPreferences из любого класса:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
И затем из любого класса: (commit возвращает логическое значение, где вы можете проверить, очищены ли ваши настройки или нет)
Navigation.getEditor(this).clear().commit();
Или вы можете использовать применить; это возвращает пустоту
Navigation.getEditor(this).clear().apply();
new File(context.getFilesDir(), fileName).delete();
Я могу удалить файл в общих настройках с ним
Ни один из ответов не работает для меня, так как у меня много общих ключей настроек.
Допустим, вы запускаете 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();
}
}
В Котлине КОГО способ очистить все настройки:
val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
clear()
}
Нажмите здесь для всех операций с общими настройками с примерами
Вы можете использовать, 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 или телефон с рутованным подключением / планшет и т. Д.
/data/data
прямого доступа !
su
после, adb shell
чтобы открыть привилегированную оболочку.