Gdzie są przechowywane wspólne preferencje?

147

Gdzie w projekcie Eclipse można napotkać współdzielony plik preferencji?

struś gospodarski
źródło
Zdaję sobie sprawę, że współdzielony plik preferencji.xml jest przechowywany w danych, ale gdzie jest przechowywany przed zainstalowaniem; w formacie .smali?
sharath3589

Odpowiedzi:

241

SharedPreferences są przechowywane w pliku xml w folderze danych aplikacji, tj

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

lub domyślne preferencje w:

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

SharedPreferences dodane w czasie wykonywania nie są przechowywane w projekcie Eclipse.

Uwaga: dostęp /data/data/<package_name>wymaga uprawnień administratora

Aleadam
źródło
3
Domyślną wspólny plik preferencji byłby rzeczywiście: /data/data/<package>/shared_prefs/<package>_preferences.xml.
inazaruk
@inazaruk To rzeczywiście pełna nazwa pakietu, chociaż widzę różne zastosowania /<package>_preferences.xmli /<package>.xmlna urządzeniach. Być może zależy to od poziomu API aplikacji?
Aleadam
1
Zauważ, że mówiłem o domyślnych preferencjach wspólnych. Wygląda na to, że nazwa pliku była dla nich zawsze taka sama. Zobacz wstępne zatwierdzenie PreferenceManager.java, getDefaultSharedPreferencesfunkcja tutaj: android.git.kernel.org/?p=platform/frameworks/… . I nie zmieniło się to w najnowszej wersji PrefencesManager.jave: android.git.kernel.org/?p=platform/frameworks/…
inazaruk
Jest jakiś sposób, aby uzyskać ścieżkę z systemu, a nie zakodować ją na stałe? ContextImpl.java implementuje to w prywatnej funkcji getPreferencesDir, przydałoby się to w jakiś sposób w czasie wykonywania.
Pointer Null
Możesz użyć nowego FIle (context.getFilesDir (). GetParent (), "shared_prefs"). Działa na Nexusie 5, nie jestem pewien co do innych producentów.
gswierczyński
9

Preferencje można ustawić w kodzie lub znaleźć w res / xml / preferences.xml. Więcej informacji o preferencjach można znaleźć w witrynie Android SDK.

JasCav
źródło
4
Musisz go utworzyć - jeśli stworzyłeś projekt na Androida, możesz kliknąć prawym przyciskiem myszy katalog „res” i dodać nowy folder o nazwie „xml”. Inne „specjalne” foldery to anim, drawable, layout, menu, raw i values.
JasCav
6

Żeby zaoszczędzić trochę czasu ...

Na moim Galaxy S v.2.3.3 Preferencje współdzielone nie są przechowywane w:/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

ale teraz znajdują się w: /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

Myślę, że zmienili to w 2.3

android-overflow
źródło
1
Czy to samo dotyczy wersji 2.2? Nie mogę znaleźć pliku / danych w dowolnym miejscu w moim projekcie ani w zaćmieniu, ani w lokalizacji projektu.
Pramod
@pramod nie w zaćmieniu - to jest ścieżka w aktualnej strukturze pliku urządzenia.
Richard Le Mesurier
@Pramod zobacz to w widoku eksploratora plików i tam w/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Akhil Jain
2
/dbdata/nie istnieje na moim urządzeniu JB
rekire
6

Po prostu próbowałem uzyskać ścieżkę wspólnych preferencji poniżej w ten sposób, to działa dla mnie.

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

if (f != null)
    Log.i("TAG", f.getAbsolutePath());
Ramesh Akula
źródło
5

Dane są przechowywane na urządzeniu w prywatnym obszarze danych aplikacji. Nie ma go w projekcie Eclipse.

hackbod
źródło
3

Preferencje wspólne to pary klucz / wartość, które możemy przechowywać. Są to wewnętrzne typy pamięci, co oznacza, że ​​nie musimy tworzyć zewnętrznej bazy danych, aby ją przechowywać. Aby go zobaczyć, przejdź do: 1) Przejdź do widoku na pasku menu. Wybierz okna narzędzi. 2) Kliknij Eksplorator plików urządzenia. 3) Eksplorator plików urządzenia otwiera się po prawej stronie. 4) Znajdź folder danych i kliknij go. 5) W folderze danych możesz wybrać inny folder danych. 6) Spróbuj wyszukać nazwę pakietu w tym folderze danych. Np. Com.example.com 7) Następnie kliknij shared_prefs i otwórz plik .xml.

Mam nadzieję że to pomoże!

Chinmai Kulkarni
źródło
1

Użyj biblioteki http://facebook.github.io/stetho/, aby uzyskać dostęp do lokalnej pamięci aplikacji za pomocą narzędzi Chrome do inspekcji. Plik sharedPreference można znaleźć w obszarze Pamięć lokalna -> <nazwa pakietu aplikacji>

wprowadź opis obrazu tutaj

Harshit Jain
źródło