Як я можу переглянути файл спільних налаштувань за допомогою 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.