Wo werden gemeinsame Einstellungen gespeichert?


147

Wo in einem Eclipse-Projekt kann eine gemeinsam genutzte Einstellungsdatei auftreten?


Mir ist bekannt, dass Shared Preference.xml in Daten gespeichert ist, aber wo wird es vor der Installation gespeichert? im .smali Format?
sharath3589

Antworten:


241

SharedPreferences werden in einer XML-Datei im App-Datenordner gespeichert, d. H.

/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

oder die Standardeinstellungen unter:

/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml

Zur Laufzeit hinzugefügte SharedPreferences werden nicht im Eclipse-Projekt gespeichert.

Hinweis: Für den Zugriff /data/data/<package_name>sind Superuser-Berechtigungen erforderlich


3
Die Standarddatei für freigegebene Einstellungen wäre tatsächlich : /data/data/<package>/shared_prefs/<package>_preferences.xml.
Inazaruk

@inazaruk Es ist in der Tat der vollständige Paketname, obwohl ich gemischte Verwendungen von /<package>_preferences.xmlund /<package>.xmlauf Geräten sehe . Vielleicht hängt es von der API-Ebene der App ab?
Aleadam

1
Beachten Sie, dass ich über die freigegebenen Standardeinstellungen gesprochen habe. Es sieht so aus, als ob der Dateiname für sie immer der gleiche war. Siehe anfängliches Commit für PreferenceManager.java, getDefaultSharedPreferencesFunktion hier: android.git.kernel.org/?p=platform/frameworks/… . Und es wurde auch in der neuesten Version von nicht geändert PrefencesManager.jave: android.git.kernel.org/?p=platform/frameworks/…
inazaruk

Gibt es eine Möglichkeit, den Pfad vom System abzurufen und nicht fest zu codieren? ContextImpl.java implementiert es in der privaten Funktion getPreferencesDir. Es wäre nützlich, dies zur Laufzeit irgendwie abzurufen.
Zeiger Null

Sie können eine neue Datei verwenden (context.getFilesDir (). GetParent (), "shared_prefs"). Es funktioniert auf Nexus 5, nicht sicher über andere Hersteller.
Gswierczynski

9

Die Einstellungen können entweder im Code festgelegt werden oder in res / xml / settings.xml. Weitere Informationen zu Einstellungen finden Sie auf der Android SDK-Website.


4
Sie müssen es erstellen - solange Sie ein Android-Projekt erstellt haben, können Sie mit der rechten Maustaste auf das Verzeichnis "res" klicken und einen neuen Ordner mit dem Namen "xml" hinzufügen. Andere "spezielle" Ordner sind Anim, Drawable, Layout, Menü, Raw und Werte.
JasCav

6

Nur um etwas Zeit zu sparen ...

Auf meinem Galaxy S v.2.3.3 werden freigegebene Einstellungen nicht gespeichert in:/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

aber befinden sich jetzt in: /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

Ich glaube, sie haben dies in 2.3 geändert


1
Ist es dasselbe in 2.2? Ich kann / data-Datei nirgendwo in meinem Projekt finden, weder in Eclipse noch am Projektspeicherort.
Pramod

@pramod nicht in Eclipse - Dies ist der Pfad in der tatsächlichen Gerätedateistruktur.
Richard Le Mesurier

@Pramod sehen es in der Datei-Explorer-Ansicht und dort in/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Akhil Jain

2
/dbdata/existiert nicht auf meinem JB-Gerät
rekire

6

Ich habe gerade versucht, den Pfad der gemeinsamen Einstellungen wie folgt zu ermitteln. Dies ist Arbeit für mich.

File f = getDatabasePath("MyPrefsFile.xml");

if (f != null)
    Log.i("TAG", f.getAbsolutePath());

5

Die Daten werden auf dem Gerät im privaten Datenbereich Ihrer Anwendung gespeichert. Es ist nicht in einem Eclipse-Projekt.


3

Gemeinsame Einstellungen sind die Schlüssel / Wert-Paare, die wir speichern können. Es handelt sich um einen internen Speichertyp, dh wir müssen keine externe Datenbank erstellen, um sie zu speichern. Um es zu sehen, gehen Sie zu: 1) Gehen Sie in der Menüleiste zu Ansicht. Wählen Sie Tool Windows. 2) Klicken Sie auf Device File Explorer. 3) Der Gerätedateie-Explorer wird auf der rechten Seite geöffnet. 4) Suchen Sie den Datenordner und klicken Sie darauf. 5) Im Datenordner können Sie einen anderen Datenordner auswählen. 6) Versuchen Sie, in diesem Datenordner nach Ihrem Paketnamen zu suchen. Beispiel: com.example.com 7) Klicken Sie dann auf shared_prefs und öffnen Sie die XML-Datei.

Hoffe das hilft!


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.