Odpowiedzi:
Aby usunąć określone wartości: SharedPreferences.Editor.remove (), a następniecommit()
Aby usunąć je wszystkie SharedPreferences.Editor.clear()
a następniecommit()
Jeśli nie zależy ci na wartości zwracanej i używasz jej z głównego wątku aplikacji, rozważ użycie apply()
zamiast niej.
Moje rozwiązanie:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
"text"
.
Usuwanie wszystkich preferencji:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
Usuwanie pojedynczej preferencji:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
KeyName
?
Jeśli nie trzeba go usuwać za każdym razem, możesz usunąć go ręcznie z:
Ustawienia -> Aplikacje -> Zarządzaj aplikacjami -> (wybierz aplikację) -> Wyczyść dane lub Odinstaluj
Nowsze wersje Androida:
Ustawienia -> Aplikacje -> (wybierz aplikację) -> Pamięć -> Wyczyść dane i Wyczyść pamięć podręczną
Usuwanie wspólnych preferencji Androida w jednym wierszu :-)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
Lub apply
w przypadku nieblokującej operacji asynchronicznej:
this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
Wydaje się, że wszystkie rozwiązania nie działają całkowicie lub są całkowicie martwe
aby wyczyścić wszystkie SharedPreferences w działaniu
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
Zadzwoń do tego z głównej aktywności po utworzeniu usługi onCreate
uwaga * użyłem .apply()
zamiast .commit()
, możesz wybrać commit ();
Możesz użyć powłoki adb, aby to zrobić nawet bez zrootowanego telefonu. Jedynym haczykiem jest to, że aplikacja musi być debuggowana.
run-as <your package name> <command>
Na przykład:
run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
Alternatywnie możesz po prostu zrobić powyższe, ale bez polecenia, które przekieruje Cię do katalogu głównego pakietu aplikacji i pozwoli ci wykonać więcej poleceń w kontekście aplikacji.
run-as
. Można by pomyśleć, że znalazłbym to po 3 latach ...
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
Wyczyść je wszystkie:
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
Możesz także ręcznie odinstalować aplikację za pomocą urządzenia. Po ponownym zainstalowaniu aplikacji preferencje udostępnione zostały zresetowane.
W definicjach klas:
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
Wewnątrz klasy:
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().commit();
}
Wypróbuj ten kod:
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
SharedPreferences.Editor remove (String string), a następnie commit () lub apply ()
Aby usunąć wszystkie wartości,
SharedPreferences.Editor clear (), po której następuje commit () lub apply ()
Aby usunąć pary klucz-wartość z preferencji, możesz łatwo wykonać następujące czynności
getActivity().getSharedPreference().editor().remove("key").apply();
Opracowałem również bibliotekę do łatwej manipulacji wspólnymi preferencjami. Możesz znaleźć następujący link
Aby wyczyścić wszystkie SharedPreferences centralnie z dowolnej klasy:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
A następnie z dowolnej klasy: (commit zwraca wartość logiczną, gdzie możesz sprawdzić, czy Preferencje zostały wyczyszczone)
Navigation.getEditor(this).clear().commit();
Lub możesz użyć zastosowania; zwraca pustkę
Navigation.getEditor(this).clear().apply();
new File(context.getFilesDir(), fileName).delete();
Mogę z nim usunąć plik w preferencjach udostępnionych
Żadna z odpowiedzi nie działa dla mnie, ponieważ mam wiele wspólnych kluczy preferencji.
Załóżmy, że przeprowadzasz test systemu Android zamiast testu jednostkowego.
Działa dla mnie pętla i usuwanie przez wszystkie pliki shared_prefs .
@BeforeClass uruchomi się przed wszystkimi testami i 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();
}
}
Sposób Kotlin ktx, aby wyczyścić wszystkie preferencje:
val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
clear()
}
Kliknij tutaj, aby wyświetlić wszystkie operacje na preferencjach współdzielonych z przykładami
Możesz użyć preferences.edit().remove("key").commit()
do usunięcia zapisanych wartości z wspólnych preferencji.
Właśnie to zrobiłem dziś rano. Z wiersza polecenia:
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
UWAGA : Wymaga to zrootowanego urządzenia, takiego jak standardowe urządzenia wirtualne z Androidem, urządzenie Genymotion lub rzeczywisty zrootowany telefon / tablet itp.
/data/data
bezpośredni dostęp !
su
później, adb shell
aby otworzyć uprzywilejowaną powłokę.