Где хранятся общие настройки?


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, было бы полезно получить это во время выполнения.
Указатель Null

Вы можете использовать новый FIle (context.getFilesDir (). GetParent (), "shared_prefs"). Он работает на Nexus 5, не уверен насчет других производителей.
gswierczynski

9

Предпочтения могут быть установлены в коде или могут быть найдены в файле res / xml / preferences.xml. Вы можете прочитать больше о настройках на сайте Android SDK.


4
Вы должны создать его - пока вы создали проект Android, вы можете затем щелкнуть правой кнопкой мыши по каталогу «res» и добавить новую папку с именем «xml». Другими «специальными» папками являются anim, drawable, layout, menu, raw и values.
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 not in eclipse - это путь к фактической файловой структуре устройства.
Ричард Ле Мезурье

@Pramod увидеть его в представлении файлового менеджера и там/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Akhil Jain

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) Затем нажмите на shared_prefs и откройте файл .xml.

Надеюсь это поможет!


1

использование http://facebook.github.io/stetho/ library для доступа к локальному хранилищу вашего приложения с помощью инструментов Chrome Inspect. Вы можете найти файл sharedPreference в разделе Локальное хранилище -> <имя пакета вашего приложения>

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.