¿Dónde se almacenan las preferencias compartidas?

147

¿En qué parte de un proyecto de Eclipse podría encontrarse un archivo de preferencias compartido?

avestruz de granja
fuente
Soy consciente de que shared.xml compartido se almacena en datos, pero ¿dónde se almacena antes de ser instalado? en formato .smali?
sharath3589

Respuestas:

241

SharedPreferences se almacenan en un archivo xml en la carpeta de datos de la aplicación, es decir

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

o las preferencias predeterminadas en:

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

SharedPreferences agregadas durante el tiempo de ejecución no se almacenan en el proyecto Eclipse.

Nota: el acceso /data/data/<package_name>requiere privilegios de superusuario

Aleadam
fuente
3
El archivo de preferencias por defecto compartida en realidad sería: /data/data/<package>/shared_prefs/<package>_preferences.xml.
inazaruk
@inazaruk De hecho, es el nombre completo del paquete, aunque veo usos mixtos de /<package>_preferences.xmly /<package>.xmlen dispositivos. ¿Quizás depende del nivel de API de la aplicación?
Aleadam
1
Tenga en cuenta que estaba tomando sobre las preferencias compartidas predeterminadas . Parece que el nombre de archivo siempre fue el mismo para ellos. Consulte la confirmación inicial de PreferenceManager.java, getDefaultSharedPreferencesfunción aquí: android.git.kernel.org/?p=platform/frameworks/… . Y tampoco se modificó en la última versión de PrefencesManager.jave: android.git.kernel.org/?p=platform/frameworks/…
inazaruk
¿Alguna forma de obtener la ruta del sistema y no codificarla? ContextImpl.java lo implementa en la función privada getPreferencesDir, sería útil obtener esto de alguna manera en tiempo de ejecución.
Puntero nulo
Puede usar un nuevo archivo (context.getFilesDir (). GetParent (), "shared_prefs"). Funciona en Nexus 5, no estoy seguro acerca de otros fabricantes.
gswierczynski
9

Las preferencias pueden establecerse en código o pueden encontrarse en res / xml /ferences.xml. Puede leer más sobre las preferencias en el sitio web del SDK de Android.

JasCav
fuente
44
Debe crearlo: siempre que haya creado un proyecto de Android, puede hacer clic con el botón derecho en el directorio "res" y agregar una nueva carpeta llamada 'xml'. Otras carpetas "especiales" son anim, drawable, layout, menu, raw y valores.
JasCav
6

Solo para ahorrarles tiempo ...

En mi Galaxy S v.2.3.3, las preferencias compartidas no se almacenan en:/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

pero ahora se encuentran en: /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

Creo que cambiaron esto en 2.3

Android-overflow
fuente
1
¿Es lo mismo en 2.2? No puedo encontrar / archivo de datos en ningún lugar de mi proyecto, ya sea en eclipse o en la ubicación del proyecto.
Pramod
@pramod no está en eclipse: esta es la ruta en la estructura de archivos del dispositivo real.
Richard Le Mesurier el
@Pramod lo ve en la vista del explorador de archivos y allí/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Akhil Jain
2
/dbdata/no existe en mi dispositivo JB
rekire
6

Solo intenté obtener la ruta de las preferencias compartidas a continuación, como esta. Esto es trabajo para mí.

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

if (f != null)
    Log.i("TAG", f.getAbsolutePath());
Ramesh Akula
fuente
5

Los datos se almacenan en el dispositivo, en el área de datos privados de su aplicación. No está en un proyecto Eclipse.

hackbod
fuente
3

Las preferencias compartidas son los pares clave / valor que podemos almacenar. Son de tipo interno de almacenamiento, lo que significa que no tenemos que crear una base de datos externa para almacenarlo. Para verlo, vaya a: 1) Vaya a Ver en la barra de menú. Seleccione la herramienta de Windows. 2) Haga clic en Device File Explorer. 3) Device File Explorer se abre en el lado derecho. 4) Encuentra la carpeta de datos y haz clic en ella. 5) En la carpeta de datos, puede seleccionar otra carpeta de datos. 6) Intente buscar el nombre de su paquete en esta carpeta de datos. Ej: com.example.com 7) Luego haga clic en shared_prefs y abra el archivo .xml.

¡Espero que esto ayude!

Chinmai Kulkarni
fuente
1

Use la biblioteca http://facebook.github.io/stetho/ para acceder al almacenamiento local de su aplicación con las herramientas de inspección de Chrome. Puede encontrar el archivo sharedPreference en Almacenamiento local -> <nombre del paquete de su aplicación>

ingrese la descripción de la imagen aquí

Harshit Jain
fuente