Antworten:
So entfernen Sie bestimmte Werte: SharedPreferences.Editor.remove () gefolgt von acommit()
Um sie alle zu entfernen, SharedPreferences.Editor.clear()
gefolgt von acommit()
Wenn Ihnen der Rückgabewert nicht wichtig ist und Sie ihn aus dem Hauptthread Ihrer Anwendung verwenden, sollten Sie ihn apply()
stattdessen verwenden.
Meine Lösung:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
"text"
.
Alle Einstellungen entfernen:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
Einzelne Präferenz entfernen:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
KeyName
?
Wenn nicht jedes Mal entfernt werden muss, können Sie es manuell entfernen aus:
Einstellungen -> Anwendungen -> Anwendungen verwalten -> (App auswählen) -> Daten löschen oder deinstallieren
Neuere Versionen von Android:
Einstellungen -> Anwendungen -> (wählen Sie Ihre App) -> Speicher -> Daten löschen und Cache löschen
Gemeinsame Android-Einstellungen in einer Zeile löschen :-)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
Oder apply
für nicht blockierenden asynchronen Betrieb:
this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
Scheint, dass nicht alle Lösungen vollständig funktionieren oder tot sind
um alle SharedPreferences in einer Aktivität zu löschen
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
Rufen Sie dies in der Hauptaktivität nach onCreate auf
note * Ich habe .apply()
stattdessen verwendet .commit()
, Sie können Commit () frei wählen;
Sie können die ADB-Shell verwenden, um dies auch ohne ein gerootetes Telefon zu tun. Der einzige Haken ist, dass die App debuggbar sein muss.
run-as <your package name> <command>
Zum Beispiel:
run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
Alternativ können Sie einfach das oben Genannte ausführen, jedoch ohne den Befehl, der Sie zum Stamm des App-Pakets weiterleitet und es Ihnen ermöglicht, weitere Befehle im Kontext der App auszuführen.
run-as
. Sie würden denken, ich hätte dies nach 3 Jahren gefunden ...
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
Ab API 24 (Nougat) können Sie einfach Folgendes tun:
context.deleteSharedPreferences("YOUR_PREFS");
Es gibt jedoch keine Abwärtskompatibilität. Wenn Sie also weniger als 24 unterstützen, bleiben Sie bei:
context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
Lösche sie alle:
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
Sie können Ihre App auch einfach manuell mit Ihrem Gerät deinstallieren. Wenn Sie Ihre App erneut installieren, wurden die freigegebenen Einstellungen zurückgesetzt.
In den Klassendefinitionen:
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
Innerhalb der Klasse:
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().commit();
}
Versuchen Sie diesen Code:
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
SharedPreferences.Editor remove (String key) gefolgt von einem commit () oder einem apply ()
Um alle Werte zu entfernen,
SharedPreferences.Editor clear () gefolgt von einem commit () oder einem apply ()
Um die Schlüsselwertpaare aus den Einstellungen zu entfernen, können Sie auf einfache Weise Folgendes tun
getActivity().getSharedPreference().editor().remove("key").apply();
Ich habe auch eine Bibliothek zur einfachen Bearbeitung gemeinsamer Einstellungen entwickelt. Möglicherweise finden Sie den folgenden Link
So löschen Sie alle SharedPreferences zentral aus einer beliebigen Klasse:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
Und dann aus jeder Klasse: (Commit gibt einen Booleschen Wert zurück, mit dem Sie überprüfen können, ob Ihre Einstellungen gelöscht wurden oder nicht.)
Navigation.getEditor(this).clear().commit();
Oder Sie können anwenden verwenden; es kehrt ungültig zurück
Navigation.getEditor(this).clear().apply();
new File(context.getFilesDir(), fileName).delete();
Ich kann damit Dateien in freigegebenen Einstellungen löschen
Keine der Antworten funktioniert für mich, da ich viele gemeinsame Einstellungsschlüssel habe.
Angenommen, Sie führen einen Android-Test anstelle eines Komponententests durch.
Es funktioniert für mich Schleife und Löschen durch alle shared_prefs- Dateien.
@BeforeClass wird vor allen Tests und ActivityTestRule ausgeführt
@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();
}
}
Der Kotlin ktx Weg, um alle Einstellungen zu löschen :
val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
clear()
}
Klicken Sie hier, um alle Vorgänge für freigegebene Einstellungen mit Beispielen anzuzeigen
Sie können preferences.edit().remove("key").commit()
gespeicherte Werte aus freigegebenen Einstellungen löschen.
Hab das heute morgen gemacht. An einer Eingabeaufforderung:
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
HINWEIS : Hierfür ist ein gerootetes Gerät erforderlich, z. B. die gängigen virtuellen Android-Geräte, ein Genymotion-Gerät oder ein tatsächlich gerootetes Mobilteil / Tablet usw.
/data/data
direkt darauf zugreifen zu können!
su
nach adb shell
zu öffnen , eine privilegierte Shell.