Де зберігаються спільні налаштування?


147

Де в проекті Eclipse можна зустріти спільний файл налаштувань?


Мені відомо, що спільний preference.xml зберігається в даних, але де він зберігається до встановлення; у форматі .smali?
sharath3589

Відповіді:


241

SharedPreferences зберігаються у файлі xml у папці даних програми, тобто

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

або налаштування за замовчуванням на:

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

SharedPreferences, додані під час виконання, не зберігаються в проекті Eclipse.

Примітка. Для доступу /data/data/<package_name>потрібні права доступу суперпользователя


3
Файл налаштувань за замовчуванням загальних фактично буде: /data/data/<package>/shared_prefs/<package>_preferences.xml.
іназарук

@inazaruk Це дійсно повна назва пакету, хоча я бачу неоднозначне використання пристроїв /<package>_preferences.xmlі /<package>.xmlна них. Можливо, це залежить від рівня API програми?
Алеадам

1
Зауважте, що я брав про спільні налаштування за замовчуванням . Схоже, ім’я файлів для них завжди було однаковим. Див початкових коммітов PreferenceManager.java, getDefaultSharedPreferencesфункція тут: android.git.kernel.org/?p=platform/frameworks / ... . І це також не було змінено в останній версії PrefencesManager.jave: android.git.kernel.org/?p=platform/frameworks/…
inazaruk

Будь-який спосіб отримати шлях із системи, а не жорстко зафіксувати його? ContextImpl.java реалізує його в приватному функцію getPreferencesDir, було б корисно якось отримати це під час виконання.
Покажчик Нуль

Ви можете використовувати нове FIle (context.getFilesDir (). GetParent (), "shared_prefs"). Він працює на Nexus 5, не впевнений у інших виробниках.
gswierczynski

9

Налаштування можуть бути встановлені в коді, або їх можна знайти в res / xml / preferences.xml. Детальніше про налаштування можна прочитати на веб-сайті Android SDK.


4
Ви повинні створити його - доки ви створили проект для Android, ви можете правою кнопкою миші натиснути на каталог "res" та додати нову папку під назвою "xml". Інші "спеціальні" папки - це анімація, малювання, компонування, меню, сировина та значення.
JasCav

6

Просто, щоб заощадити трохи часу ...

На моєму Galaxy S v.2.3.3 Налаштування спільного доступу не зберігаються у:/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

але зараз вони розташовані в: /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

Я вважаю, що вони змінили це в 2.3


1
Це те ж саме в 2.2? Я не можу знайти / файл даних в будь-якому місці мого проекту або в затемненні, або в проекті.
Pramod

@pramod не в затемненні - це шлях до фактичної структури файлу пристрою.
Річард Ле Месюр'є

@Pramod бачимо це у перегляді файлів провідника, а там/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Ахіл Джайн

2
/dbdata/не існує на моєму пристрої JB
rekire

6

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

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

if (f != null)
    Log.i("TAG", f.getAbsolutePath());

5

Дані зберігаються на пристрої, у приватній області вашої програми. Це не в проект Eclipse.


3

Параметри спільного користування - пари ключів / значень, які ми можемо зберігати. Вони є внутрішнім типом зберігання, що означає, що нам не потрібно створювати зовнішню базу даних для її зберігання. Щоб побачити його, перейдіть до: 1) Перейдіть до "Перегляд" на панелі меню. Виберіть Інструмент Windows. 2) Клацніть на Провідник файлів пристроїв. 3) Провідник файлів пристрою відкриється в правій частині. 4) Знайдіть папку даних і натисніть на неї. 5) У папці даних ви можете вибрати іншу папку даних. 6) Спробуйте шукати назву пакета в цій папці даних. Наприклад: com.example.com 7) Потім натисніть на спільний_преф і відкрийте файл .xml.

Сподіваюся, це допомагає!


1

Використовуйте бібліотеку http://facebook.github.io/stetho/, щоб отримати доступ до локального сховища додатка за допомогою інструментів для перевірки хромом. Файл sharedPreference можна знайти в розділі Місцеве сховище -> <назва пакету програми>

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

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