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