Wo werden gemeinsame Einstellungen gespeichert?

147

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

Bauernhof Strauß
quelle
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

Aleadam
quelle
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.

JasCav
quelle
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

Android-Überlauf
quelle
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());
Ramesh Akula
quelle
5

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

Hackbod
quelle
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!

Chinmai Kulkarni
quelle
1

Verwenden Sie die Bibliothek http://facebook.github.io/stetho/, um mit Chrome Inspect Tools auf den lokalen Speicher Ihrer App zuzugreifen. Sie finden die sharedPreference-Datei unter Lokaler Speicher -> <Paketname Ihrer App>

Geben Sie hier die Bildbeschreibung ein

Harshit Jain
quelle