Gdzie są przechowywane wspólne preferencje?


147

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


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


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.


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


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

5

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


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!


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.