591 Stimmen

So löschen Sie freigegebene Einstellungsdaten aus einer App in Android

Wie lösche ich SharedPreferences-Daten für meine Anwendung?

Ich bin dabei, eine Anwendung zu erstellen, die viele Webdienste zur Synchronisierung von Daten verwendet. Zu Testzwecken muss ich einige SharedPreferences-Werte löschen, wenn ich die Anwendung neu starte.

25voto

Shady Keshk Punkte 518

Es scheint, dass alle Lösungen nicht 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 von der Hauptaktivität nach onCreate auf

Anmerkung* Ich habe .apply() anstelle von .commit() steht es Ihnen frei, commit() zu wählen;

17voto

afathman Punkte 5835

Ab API 24 (Nougat) können Sie einfach tun:

context.deleteSharedPreferences("YOUR_PREFS");

Allerdings gibt es keine Abwärtskompatibilität, wenn Sie also etwas weniger als 24 unterstützen, sollten Sie sich an das Programm halten:

context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();

15voto

sivi Punkte 9816

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();
}

11voto

Johnson Wong Punkte 3885

Sie können die adb-Shell verwenden, um dies zu tun, auch ohne ein verwurzeltes Telefon. Der einzige Haken ist, dass die App debuggingfähig 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 die obigen Schritte auch ohne den Befehl ausführen, der Sie zum Paket Root der Anwendung führt und Ihnen erlaubt, weitere Befehle im Kontext der Anwendung auszuführen.

11voto

Vaishali Sutariya Punkte 5073
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X