¿Cómo puedo ver el archivo de preferencias compartidas con Android Studio?

Estoy usando preferencias compartidas para almacenar ciertos valores para mi aplicación. Me gustaría ver el archivo donde la información está realmente almacenada en mi teléfono. Encontré muchas maneras de hacer esto en Eclipse, pero estoy depurando en Android Studio. Mi teléfono está rooteado. Leí que tener acceso a la raíz es importante para leer este tipo de archivos. Si no hay forma, entonces buscaré cómo acceder a la información a través de mi progtwig y luego la enviaré a log cat. Sin embargo, con suerte, puedo ver el archivo en el teléfono directamente, ya que es mucho más simple. Gracias.

Desde Android Studio, inicie Android Device Monitor, vaya a File Explorer y busque “/ data / data / / shared_prefs /”. Encontrará el XML allí … y también puede copiarlo para su inspección.

Si tiene un dispositivo no rooteado, no es posible hacerlo directamente desde Android Studio. Sin embargo, puede acceder al archivo con adb shell siempre que su aplicación sea la versión de depuración.

 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 

Después de eso, puede extraer el archivo del directorio / sdcard con adb.

Puede usar http://facebook.github.io/stetho/ para acceder a sus preferencias compartidas mientras su aplicación se encuentra en el modo de depuración. Sin raíz

caracteristicas:

  1. ver y editar las preferencias compartidas
  2. ver y editar sqLite db
  3. ver jerarquía de vista
  4. monitorear las solicitudes de red http
  5. ver transmisión desde la pantalla del dispositivo
  6. y más….

enter image description here

Configuración básica:

  1. en build.gradle add compile 'com.facebook.stetho:stetho:1.5.0'
  2. en la aplicación onCreate () agrega Stetho.initializeWithDefaults(this);
  3. en Chrome en tu PC ve a Chrome: // inspeccionar /

También puedes usar la sugerencia de @Jeffrey:

  • Abra el Explorador de archivos del dispositivo (parte inferior derecha de la pantalla)
  • Vaya a data / data / com.yourAppName / shared_prefs

ACTUALIZACIÓN: Flipper es una alternativa más nueva de Facebook. Tiene más funciones pero, por el momento, la escritura solo está disponible para Mac, es un poco más difícil de configurar y carece de depuración de base de datos, mientras que brinda un inspector de diseño mejorado.

Simplemente podría crear una Actividad especial para la depuración:

 @SuppressWarnings("unchecked") public void loadPreferences() { Map 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) pref; } // create a TextView with printVal as text and add to layout } } 

Esta es una publicación anterior, pero creo que debería poner una respuesta gráfica aquí, ya que la pregunta es sobre la visualización de SharedPreferences.xml con Android Studio. Entonces aquí va.

Vaya a Herramientas -> Monitor del dispositivo Android. Abra el monitor del dispositivo haciendo clic en él.

enter image description here

Luego debe seleccionar la pestaña Explorador de archivos en el monitor del dispositivo. Encuentra la carpeta de datos y encuentra otra carpeta de datos dentro de ella. Contendrá una carpeta que tiene el nombre de su paquete de aplicación y tendrá las SharedPreferences.xml deseadas.

enter image description here

Seleccione el archivo SharedPreferences.xml y luego arrastre y guarde el archivo en su computadora con el botón marcado en la esquina superior derecha de la imagen de arriba.

He usado un emulador de dispositivo.

Otra forma simple sería usar una aplicación de explorador de raíz en su teléfono.

Luego vaya a /data/data/package name/shared preferences folder/name of your preferences.xml , puede usar ES File explorer , y vaya a la root de su dispositivo, no a la sd card .

Android Studio -> Device File Explorer (esquina inferior derecha) -> data -> data -> {package.id} -> shared-prefs

Nota: debe conectar el dispositivo móvil a Android Studio y la aplicación seleccionada debe estar en modo de depuración

Archivos de preferencia compartidos simples o múltiples

Si tiene varios archivos de Shared Preference , esta es una buena manera de mostrarlos, pero también puede pasar 1 nombre de archivo.

  • loadSharedPrefs("pref_name");

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

Elija una de las siguientes opciones para satisfacer sus necesidades …

Valores de un solo tipo

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

Valores de tipo múltiple

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

Salida de Logcat

Mis valores de Shared Preference son todos String , pero este es el resultado usando cualquiera de los 2 métodos anteriores …

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

Ejecute la aplicación en Emulator después de insertar algunos datos, solo cierre la aplicación.

Ahora abra DDMS o Android Monitor y seleccione su emulador. En el lado derecho, puede ver el Explorador de archivos, buscar la carpeta de datos en él y buscar el paquete de la aplicación que ha creado, en el que puede encontrar el archivo de preferencias compartidas abierto puede ver el archivo XML, hacer clic en él y hacer clic en el botón “extraer un archivo” del dispositivo en la esquina superior derecha.

El archivo XML se guardará en la ubicación que desee, luego puede abrirlo usando cualquier editor como notepad ++ y puede ver los datos que ha ingresado.

Siempre encuentro estos comandos útiles en la consola:

  1. Encuentra el nombre correcto del archivo

    adb shell

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

  2. Obtener el archivo en el directorio local

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

  3. Verifíquelo en su $local_dir .

En Android Studio 3 :

  • Abra el Explorador de archivos del dispositivo (parte inferior derecha de la pantalla).
  • Vaya a data / data / com.yourAppName / shared_prefs.

o use la base de datos de depuración de Android