Відповіді:
Для видалення конкретних значень: SharedPreferences.Editor.remove (), а потім acommit()
Щоб видалити їх, SharedPreferences.Editor.clear()
слідує acommit()
Якщо вам не байдуже значення, що повертається, і ви використовуєте це з основного потоку програми, подумайте про використання 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();
Здається, що все рішення не є повністю працюючим або відмерлим
щоб очистити всі параметри спільного доступу до активності
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.Editor видалити (Строкова клавіша) з подальшим введенням () або застосувати ()
Щоб видалити всі значення,
SharedPreferences.Editor clear () з подальшим зобов'язанням () або застосувати ()
Щоб видалити пари ключових значень із переваг, ви можете легко виконати наступне
getActivity().getSharedPreference().editor().remove("key").apply();
Я також розробив бібліотеку для легкого маніпулювання загальними налаштуваннями. Ви можете знайти таке посилання
Щоб центрально очистити всі параметри спільного доступу з будь-якого класу:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
І тоді з будь-якого класу: (команда повертає булевий файл, де ви можете перевірити, чи очищені ваші налаштування чи ні)
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
відкрити привілейовану оболонку.