Używam wspólnych preferencji do przechowywania pewnych wartości dla mojej aplikacji. Chciałbym zobaczyć plik, w którym informacje są faktycznie przechowywane w moim telefonie. Znalazłem wiele sposobów, aby to zrobić w Eclipse, ale debuguję w Android Studio. Mój telefon jest zrootowany. Czytałem, że posiadanie uprawnień administratora jest ważne, aby czytać tego typu pliki. Jeśli nie ma sposobu, sprawdzę, jak uzyskać dostęp do informacji za pośrednictwem mojego programu, a następnie wyślę je do dziennika cat. Mam jednak nadzieję, że mogę po prostu wyświetlić plik bezpośrednio w telefonie, ponieważ jest to znacznie prostsze. Dzięki.
android
android-studio
sharedpreferences
JayUser
źródło
źródło
adb pull /data/data/<packagename>/shared_prefs/prefs.xml
Odpowiedzi:
W Android Studio uruchom Android Device Monitor, przejdź do Eksploratora plików i przeglądaj „/ data / data / <nazwa pakietu> / shared_prefs /”. Znajdziesz tam XML ... a także możesz go skopiować do wglądu.
Jeśli masz niezrootowane urządzenie, nie możesz tego zrobić bezpośrednio z Android Studio. Możesz jednak uzyskać dostęp do pliku, o
adb shell
ile Twoja aplikacja jest wersją debugowania.adb shell run-as your.app.id chmod 777 shared_prefs/your.app.id_preferences.xml exit # return to default user cp /data/data/your.app.id/shared_prefs/your.app.id_preferences.xml /sdcard
Następnie możesz pobrać plik z katalogu / sdcard za pomocą adb.
źródło
Eksplorator plików urządzeń, który jest częścią Android Studio 3.x, jest naprawdę dobry do przeglądania plików preferencji, elementów pamięci podręcznej lub bazy danych.
Wygląda mniej więcej tak
Aby otworzyć Eksplorator plików urządzenia:
Kliknij Widok> Okna narzędzi> Eksplorator plików urządzenia lub kliknij przycisk Eksplorator plików urządzenia na pasku narzędzi.
źródło
Stetho
Możesz użyć http://facebook.github.io/stetho/, aby uzyskać dostęp do wspólnych preferencji, gdy aplikacja jest w trybie debugowania.Bez korzenia
cechy:
Podstawowe ustawienia:
compile 'com.facebook.stetho:stetho:1.5.0'
Stetho.initializeWithDefaults(this);
AKTUALIZACJA: Flipper
Flipper to nowsza alternatywa dla Facebooka. Ma więcej funkcji, ale na razie pisanie jest dostępne tylko dla komputerów Mac, nieco trudniejsze w konfiguracji i brakuje mu debugowania bazy danych, a jednocześnie zapewnia niezwykle ulepszony inspektor układu
Możesz również skorzystać z sugestii @Jeffrey:
źródło
Android Studio -> Eksplorator plików urządzenia (prawy dolny róg) -> dane -> dane -> {package.id} -> shared-prefs
Uwaga: musisz podłączyć urządzenie mobilne do Android Studio, a wybrana aplikacja powinna być w trybie debugowania
źródło
Możesz po prostu utworzyć specjalne działanie do celów debugowania:
@SuppressWarnings("unchecked") public void loadPreferences() { // create a textview with id (tv_pref) in Layout. TextView prefTextView; prefTextView = (TextView) findViewById(R.id.tv_pref); Map<String, ?> prefs = PreferenceManager.getDefaultSharedPreferences( context).getAll(); for (String key : prefs.keySet()) { Object pref = prefs.get(key); String printVal = ""; if (pref instanceof Boolean) { printVal = key + " : " + (Boolean) pref; } if (pref instanceof Float) { printVal = key + " : " + (Float) pref; } if (pref instanceof Integer) { printVal = key + " : " + (Integer) pref; } if (pref instanceof Long) { printVal = key + " : " + (Long) pref; } if (pref instanceof String) { printVal = key + " : " + (String) pref; } if (pref instanceof Set<?>) { printVal = key + " : " + (Set<String>) pref; } // Every new preference goes to a new line prefTextView.append(printVal + "\n\n"); } } // call loadPreferences() in the onCreate of your Activity.
źródło
To jest stary post, ale pomyślałem, że powinienem umieścić tutaj graficzną odpowiedź, ponieważ pytanie dotyczy przeglądania
SharedPreferences.xml
pomocą Android Studio. Więc oto jest.Przejdź do Narzędzia -> Monitor urządzenia Android. Otwórz monitor urządzenia, klikając go.
Następnie musisz wybrać kartę Eksplorator plików w monitorze urządzenia. Znajdź folder danych i znajdź w nim inny folder danych. Będzie zawierał folder z nazwą pakietu aplikacji i żądany plik
SharedPreferences.xml
.Wybierz
SharedPreferences.xml
plik, a następnie przeciągnij i zapisz plik na swoim komputerze za pomocą przycisku zaznaczonego w prawym górnym rogu powyższego obrazu.Użyłem emulatora urządzenia.
źródło
Pojedyncze lub wiele udostępnionych plików preferencji
Jeśli masz wiele
Shared Preference
plików, tutaj jest dobry sposób na pokazanie ich wszystkich, ale możesz też podać jedną nazwę pliku.loadSharedPrefs("pref_name");
loadSharedPrefs("shared_pref1", "shared_pref2", "shared_pref3");
Wybierz jedną z poniższych opcji, aby dopasować ją do swoich potrzeb ...
Wartości pojedynczego typu
public void loadSharedPrefs(String ... prefs) { // Logging messages left in to view Shared Preferences. I filter out all logs except for ERROR; hence why I am printing error messages. Log.i("Loading Shared Prefs", "-----------------------------------"); Log.i("----------------", "---------------------------------------"); for (String pref_name: prefs) { SharedPreferences preference = getSharedPreferences(pref_name, MODE_PRIVATE); for (String key : preference.getAll().keySet()) { Log.i(String.format("Shared Preference : %s - %s", pref_name, key), preference.getString(key, "error!")); } Log.i("----------------", "---------------------------------------"); } Log.i("Finished Shared Prefs", "----------------------------------"); }
Wartości wielu typów
public void loadSharedPrefs(String ... prefs) { // Define default return values. These should not display, but are needed final String STRING_ERROR = "error!"; final Integer INT_ERROR = -1; // ... final Set<String> SET_ERROR = new HashSet<>(1); // Add an item to the set SET_ERROR.add("Set Error!"); // Loop through the Shared Prefs Log.i("Loading Shared Prefs", "-----------------------------------"); Log.i("------------------", "-------------------------------------"); for (String pref_name: prefs) { SharedPreferences preference = getSharedPreferences(pref_name, MODE_PRIVATE); Map<String, ?> prefMap = preference.getAll(); Object prefObj; Object prefValue = null; for (String key : prefMap.keySet()) { prefObj = prefMap.get(key); if (prefObj instanceof String) prefValue = preference.getString(key, STRING_ERROR); if (prefObj instanceof Integer) prefValue = preference.getInt(key, INT_ERROR); // ... if (prefObj instanceof Set) prefValue = preference.getStringSet(key, SET_ERROR); Log.i(String.format("Shared Preference : %s - %s", pref_name, key), String.valueOf(prefValue)); } Log.i("------------------", "-------------------------------------"); } Log.i("Loaded Shared Prefs", "------------------------------------"); } }
Wyjście Logcat
Moje
Shared Preference
wartości to wszystkieString
, ale to jest wynik przy użyciu jednej z 2 powyższych metod ...I/Loading Shared Prefs﹕ ----------------------------------- I/------------------﹕ ------------------------------------- I/Shared Preference : FAVORITE - 135397﹕ Jurassic World I/Shared Preference : FAVORITE - 87101﹕ Terminator Genisys I/Shared Preference : FAVORITE - 177677﹕ Mission: Impossible – Rogue Nation I/------------------﹕ ------------------------------------- I/Shared Preference : WATCHED - 177677﹕ Mission: Impossible – Rogue Nation I/Shared Preference : WATCHED - 157336﹕ Interstellar I/Shared Preference : WATCHED - 135397﹕ Jurassic World I/Shared Preference : WATCHED - 87101﹕ Terminator Genisys I/------------------﹕ ------------------------------------- I/Shared Preference : WILL_WATCH - 211672﹕ Minions I/Shared Preference : WILL_WATCH - 102899﹕ Ant-Man I/------------------﹕ ------------------------------------- I/Loaded Shared Prefs﹕ ------------------------------------
źródło
Innym prostym sposobem byłoby użycie aplikacji root explorer na telefonie.
Następnie przejdź do
/data/data/package name/shared preferences folder/name of your preferences.xml
, możesz użyć eksploratora plików ES i przejdź doroot
swojego urządzenia, a niesd card
.źródło
Aby otworzyć udostępnione
preference
w Android Studioznajdź załączony obraz, aby uzyskać dokładniejszy opis
źródło
W Android Studio 3 :
lub użyj bazy danych debugowania systemu Android
źródło
W Eksploratorze plików urządzenia postępuj zgodnie z poniższą ścieżką: -
/data/data/com.**package_name**.test/shared_prefs/com.**package_name**.test_preferences.xml
źródło
Uruchom aplikację w Emulatorze po wstawieniu danych, po prostu zamknij aplikację.
Teraz otwórz DDMS lub Android Monitor i wybierz emulator, po prawej stronie możesz zobaczyć Eksplorator plików, poszukać w nim folderu Data i poszukać pakietu aplikacji, który utworzyłeś, w którym możesz znaleźć otwarty plik preferencji współdzielonych możesz zobaczyć plik XML, kliknąć go i kliknąć przycisk pobierania pliku z urządzenia w prawym górnym rogu.
Plik XML zostanie zapisany w żądanej lokalizacji, a następnie możesz go otworzyć za pomocą dowolnego edytora, takiego jak Notatnik ++, i możesz wyświetlić wprowadzone dane.
źródło
Te polecenia zawsze są przydatne w konsoli:
Znajdź poprawną nazwę pliku
adb shell
ls /data/data/com.your.package/shared_prefs
Pobierz plik do katalogu lokalnego
adb pull /data/data/com.your.package/shared_prefs/the_file_you_want $local_dir
Sprawdź to w swoim
$local_dir
.źródło
Jeśli używasz emulatora, możesz zobaczyć
sharedPrefs.xml
plik na terminalu za pomocą tych poleceń:adb root
cat /data/data/<project name>/shared_prefs/<xml file>
po tym możesz użyć,
adb unroot
jeśli nie chcesz, aby urządzenie wirtualne było zrootowane.źródło