Як я можу переглянути файл спільних налаштувань за допомогою Android Studio?


101

Я використовую спільні налаштування для зберігання певних значень для мого додатка. Я хотів би побачити файл, де інформація фактично зберігається на моєму телефоні. Я знайшов багато способів зробити це на Eclipse, але налагоджую на Android Studio. Мій телефон кореневий. Я прочитав, що мати root-доступ важливо для читання файлів такого типу. Якщо немає можливості, тоді я розгляну, як отримати доступ до інформації через мою програму, а потім вивести її в журнал cat. Сподіваюся, однак, я можу просто переглянути файл на телефоні безпосередньо, оскільки він набагато простіший. Дякую.


Встановіть ES File Explorer і ввімкніть перегляд root. Тоді ви зможете відкрити його безпосередньо на телефоні.
CurlyPaul

3
спробуйте використати adb pull, щоб завантажити файл на робочий стіл. adb pull /data/data/<packagename>/shared_prefs/prefs.xml
Lal

2
АБО перейдіть до провідника файлів і у дереві файлів знайдіть папку даних вашого додатка в /data/data/com.your-package/shared_prefs. Файл налаштувань буде там, як XML. Скопіюйте його з пристрою і насолоджуйтесь. У правому верхньому куті подання File Explorer розміщені дві кнопки значка - одна з диском та одна з мобільного телефону. Ці кнопки дозволять копіювати файли з телефону та емулятора відповідно.
Lal

1
Чомусь мій файл prefs xml називається <PACKAGENAME> _preferences.xml
JPM

Відповіді:


95

З Android Studio запустіть Android Device Monitor, перейдіть до Провідника файлів і перегляньте "/ data / data / <назва вашого пакета> / shared_prefs /". Ви знайдете там XML ... а також можете скопіювати його для перевірки.

Якщо у вас пристрій без коренів, це неможливо зробити безпосередньо з Android Studio. Однак ви можете отримати доступ до файлу adb shell, якщо ваша програма є версією налагодження.

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

Після цього ви можете витягнути файл із каталогу / sdcard за допомогою adb.


Я не можу отримати доступ до цієї папки з Device Monitor. Чи потрібен корінь?
Marian Klühspies

2
Другий спосіб працює для некореневих пристроїв. Після того, як ви скопіюєте файл на SD-карту, ви можете вийти з adb і запустити adb pull "/ sdcard / your_preferences_file", і ви отримаєте файл xml у вашому поточному каталозі, який ви можете перевірити.
Bebop_

4
Ви можете фактично захопити цю інформацію з емулятора без root, якщо ви можете налагодити таким чином. Якщо ви перебуваєте на фізичному пристрої, вам знадобиться root.
Бугер

3
шукайте провідник файлів пристрою в нижньому правому куті AndroidStudio. Це забезпечить вам легкий доступ до файлової системи пристрою
Максим Тураєв

2
Використовуючи Провідник файлів пристроїв, я можу отримати доступ до спільних налаштувань без доступу до кореня
Devansh Maurya,

77

Провідник файлів пристроїв, що входить до Android Studio 3.x , дійсно добре підходить для вивчення ваших файлів (-ів) налаштувань, елементів кешу або бази даних.

  1. Каталог спільних налаштувань / data / data // shared_prefs

введіть тут опис зображення

Це виглядає приблизно так

введіть тут опис зображення

Щоб відкрити Провідник файлів пристрою:

Клацніть Перегляд> Інструмент Windows> Провідник файлів пристрою або натисніть кнопку Провідник файлів пристрою на панелі вікна інструменту.

введіть тут опис зображення


13
Відкрийте Провідник файлів пристроїв (праворуч унизу екрана).
Апіт Джон Ісмаїл

47

Стето

Ви можете використовувати http://facebook.github.io/stetho/ для доступу до спільних налаштувань, поки ваша програма перебуває в режимі налагодження. Ні коріння

особливості:

  1. перегляд та редагування спільних налаштувань
  2. перегляд та редагування sqLite db
  3. вид перегляд спадковість
  4. стежити за мережевими запитами http
  5. перегляд потоку з екрану пристрою
  6. і більше....

введіть тут опис зображення

Базова настройка:

  1. у складі build.gradle compile 'com.facebook.stetho:stetho:1.5.0'
  2. у додатку onCreate () add Stetho.initializeWithDefaults(this);
  3. у Chrome на ПК перейдіть до chrome: // inspect /

ОНОВЛЕННЯ: Фліппер

Flipper - новіша альтернатива з facebook. Він має більше функцій, але на даний момент написання доступне лише для Mac, трохи складніше налаштовуватись і не має налагодження бази даних, одночасно створюючи надзвичайно вдосконалений інспектор макета

Ви також можете скористатися пропозицією @Jeffrey:

  • Відкрийте Провідник файлів пристрою (внизу праворуч від екрана)
  • Перейдіть до data / data / com.yourAppName / shared_prefs

Чи може це працювати на емуляторах? Здається, я не можу змусити це працювати
ЕдуардоМая,

@EduardoMaia Це повинно. Я використовую його з емулятором щодня. Ви можете створити питання за допомогою скріншотів, тому я спробую вам допомогти.
Максим Тураєв

@EduardoMaia Ви можете спробувати зробити наступне: 1. Клонуйте facebook-сховище стето. 2. Імпортуйте цей проект в ОСТАННІЙ Android Studio (Файл-> Імпортувати -> "вибрати настройки.gradle") 3. погоджуйтесь оновити плагін gradle. 4. Запустіть Android Emulator (у моєму випадку API 24) 5. Запустіть стето-зразок (виберіть його в меню конфігурації запуску поряд із зеленою стрілкою 6. На вашому ПК відкрийте найновіший браузер Chrome 7. перейдіть за chrome: // inspect address 8. вибрав свій емулятор у списку 9. У відкритому вікні перейдіть на вкладку Ресурси 10. Знайдіть свої спільні налаштування в меню LocalStorage зліва 11. В програмі грайте з логічним прапором
Максим Тураєв

Я вирішив свою проблему вчора, не потребуючи перегляду спільних преф. Але я спробую цей крок за іншим днем. Дякую.
EduardoMaia

14

Ви можете просто створити спеціальну Діяльність для налагодження:

@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.

Це було дуже корисно, але не зовсім відповідало моїй потребі. Я додав редагування, яке дозволяє використовувати декілька спільних файлів уподобань
Крістофер Ручинський

Дякую, у мене просто виникають проблеми з тим, як прийняти зміни
cYrixmorten

Це заперечували інші. Вони сказали, що це має бути власна відповідь, тому я ставлю це як нову відповідь. Спочатку я просто відредагував вашу відповідь, тому що зміг зробити те, що зробив, лише побачивши вашу відповідь.
Крістофер Ручинський

Гаразд :-) так, мені спало на думку після цього, це довелося переглянути іншим
cYrixmorten

13

Android Studio -> Провідник файлів пристроїв (нижній правий кут) -> дані -> дані -> {package.id} -> спільні преф

Примітка: Вам потрібно підключити мобільний пристрій до андроїд-студії, а вибрана програма повинна бути в режимі налагодження


10

Це стара публікація, але я хотів би поставити тут графічну відповідь, оскільки питання стосується перегляду SharedPreferences.xml Android Studio. Отже, справа йде.

Зайдіть в Інструменти -> Монітор пристрою Android. Відкрийте монітор пристрою, клацнувши на ньому.

введіть тут опис зображення

Потім потрібно вибрати вкладку Провідник файлів на моніторі пристрою. Знайдіть папку даних і знайдіть іншу папку даних всередині неї. Він міститиме папку з назвою пакету вашої програми, і там буде потрібний SharedPreferences.xml.

введіть тут опис зображення

Виберіть SharedPreferences.xml файл, а потім витягніть і збережіть файл у своєму комп’ютері за допомогою кнопки, позначеної у верхньому правому куті зображення вгорі.

Я використовував емулятор пристрою.


1
Завдяки вашому допису я дізнався про developer.android.com/studio/debug/device-file-explorer, що є новим способом зробити те саме, що ви тут пояснюєте.
malarres

Чудово знати, що я міг допомогти! Ти найбільш бажаний.
Реаз Муршед

4

Один або кілька спільних файлів налаштувань

Якщо у вас кілька Shared Preferenceфайлів, то тут є хороший спосіб показати їх усі, але ви також можете просто передати 1 ім’я файлу.

  • loadSharedPrefs("pref_name");

  • loadSharedPrefs("shared_pref1", "shared_pref2", "shared_pref3");

Виберіть одне з наведеного нижче відповідно до ваших потреб ...

Однотипні значення

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", "----------------------------------");

}

Значення декількох типів

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", "------------------------------------");

}

}

Вихід Logcat

Мої Shared Preferenceзначення - це все String, але це вихід, використовуючи будь-який із 2-х вищенаведених методів ...

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

4

Ще одним простим способом буде використання програми root explorer на вашому телефоні.

Тоді перейдіть до /data/data/package name/shared preferences folder/name of your preferences.xml, ви можете використовувати ES File Explorer , а перейдіть до rootвашого пристрою, а не sd card.


1
Це не дає відповіді на запитання. Щоб критикувати або вимагати роз’яснень від автора, залиште коментар під його публікацією - ви завжди можете коментувати власні публікації, і коли у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію . - З огляду
Luca Detomi

@LucaDetomi Ви знаєте, що я тут
user5291072

Ваша відповідь позначена як занадто коротка. Відповіді повинні містити деталі, які дозволять користувачам зрозуміти, «чому» це може бути гарною відповіддю і, можливо, найкращою. Я пропоную вам додати більше деталей, які допоможуть зрозуміти принципи та, можливо, адаптувати його до інших подібних питань
Лука Детомі

4

Щоб відкрити спільний доступ preferenceв студії Android

Відкрийте файл провідника пристрою справа - дані> дані>> shared_prefs

знайдіть додане зображення для додаткового опису



2

Запустіть програму в Емуляторі після вставки деяких даних, просто закрийте програму.

Тепер відкрийте DDMS або Android Monitor та виберіть емулятор, праворуч ви побачите Провідник файлів, шукайте в ньому папку Дані та шукайте створений вами пакет додатків, у якому можна знайти відкритий файл налаштувань відкритим це, ви можете побачити файл XML, клацнути на ньому та клацнути витягнути файл із кнопки пристрою у верхньому правому куті.

XML-файл буде збережено у вашому бажаному місці, тоді ви зможете відкрити його за допомогою будь-якого редактора, наприклад notepad ++, і зможете переглянути введені вами дані.


В Android Studio 3.0 , я знайшов його в Device File Explorer > Дані> Дані> (ім'я пакета)> shared_prefs> (ім'я пакета) _preferences.xml
Josselin

2

У Провіднику файлів пристроїв виконайте наступний шлях: -

/data/data/com.**package_name**.test/shared_prefs/com.**package_name**.test_preferences.xml

1

Я завжди вважаю ці команди корисними в консолі:

  1. Знайдіть правильну назву файлу

    adb shell

    ls /data/data/com.your.package/shared_prefs

  2. Перенесіть файл до локального каталогу

    adb pull /data/data/com.your.package/shared_prefs/the_file_you_want $local_dir

  3. Перевірте це у своєму $local_dir.


1

Якщо ви використовуєте емулятор, ви можете побачити sharedPrefs.xmlфайл на терміналі за допомогою таких команд:

  • adb root
  • cat /data/data/<project name>/shared_prefs/<xml file>

після цього ви можете використовувати, adb unrootякщо не хочете, щоб віртуальний пристрій залишався кореневим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.