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

Estoy usando las preferencias compartidas para almacenar ciertos valores para mi aplicación. Me gustaría ver el archivo donde la información realmente se almacena en mi teléfono. He encontrado muchas maneras de hacer esto en Eclipse, pero estoy depurando en Android Studio. Mi teléfono está enraizado. He leído que tener acceso root es importante para leer estos tipos de archivos. Si no hay manera, entonces buscaré cómo acceder a la información a través de mi programa a continuación, la salida de registro de gato. Espero que, sin embargo, sólo 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 explore "/ data / data / <nombre del paquete> / shared_prefs /". Usted encontrará el XML allí … y también se puede copiar para su inspección.

Si tiene un dispositivo no enraizado, no es posible hacerlo directamente desde Android Studio. Sin embargo, puede acceder al archivo con adb shell siempre y cuando 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 utilizar http://facebook.github.io/stetho/ para acceder a sus preferencias compartidas mientras su aplicación está en el modo de depuración. Sin raíz

caracteristicas:

  1. Ver y editar las preferencias compartidas
  2. Ver y editar sqlite db
  3. Vista ver heirarchy
  4. Supervisar las solicitudes de red http
  5. Ver flujo desde la pantalla del dispositivo
  6. y más….

Introduzca aquí la descripción de la imagen

Configuración básica:

  1. En la build.gradle add compile 'com.facebook.stetho:stetho:1.5.0'
  2. En la aplicación onCreate () agregue Stetho.initializeWithDefaults(this);
  3. En Chrome en tu PC, ve al chrome: // inspecciona /

Usted podría simplemente crear una actividad especial para el propósito de depuración:

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

Otra forma sencilla sería utilizar una aplicación de explorador de raíz en tu teléfono.

A continuación, vaya a /data/data/package name/shared preferences folder/name of your preferences.xml , puede utilizar ES File explorer , y vaya a la root de su dispositivo, no la sd card .

Archivos de preferencias compartidas individuales o múltiples

Si tiene varios archivos de Shared Preference , aquí hay una buena manera de mostrarlas todas, pero también puede pasar un 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<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", "------------------------------------"); } } 

Salida Logcat

Mis valores Shared Preference son todos String , pero esta es la salida utilizando 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﹕ ------------------------------------ 

Siempre encuentro estos comandos útiles en la consola:

  1. Encuentra el nombre de archivo correcto

    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. Compruébelo en su $local_dir .

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

Ahora abra el Monitor de DDMS o Android y seleccione su emulador, en el lado derecho puede ver el Explorador de archivos, busque la carpeta Datos en él y busque el paquete de aplicaciones que ha creado, en el que puede encontrar el archivo de preferencias compartidas abierto , Puede ver el archivo XML, haga clic en él y haga clic en el extraer un archivo desde el botón del dispositivo en la esquina superior derecha.

El archivo XML se guardará en la ubicación deseada y, a continuación, podrá abrirlo utilizando cualquier editor como el bloc de notas ++ y podrá ver los datos introducidos.

Esta es una antigua publicación, pero creo que debo poner una respuesta gráfica aquí, ya que la pregunta es acerca de la visualización de SharedPreferences.xml con Android Studio. Así que aquí va.

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

Introduzca aquí la descripción de la imagen

A continuación, debe seleccionar la pestaña Explorador de archivos en el monitor del dispositivo. Encuentre la carpeta de datos y busque otra carpeta de datos dentro de ella. Contendrá una carpeta con el nombre de su paquete de aplicación y habrá el SharedPreferences.xml deseado.

Introduzca aquí la descripción de la imagen

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

He utilizado un emulador de dispositivo.

  • ¿Qué es un reemplazo de MODE_WORLD_READABLE SharedPreferences obsoleto en Android?
  • La mejor opción para almacenar nombre de usuario y contraseña en la aplicación Android
  • SharedPreferences no funciona en todas las actividades
  • Predeterminado Preferencias compartidas me dan valores incorrectos en Service
  • cómo guardar togglebutton estado utilizando preferencias compartidas
  • Preferencias compartidas - longitud máxima de un solo valor
  • Android SharedPreferences después de reiniciar el dispositivo
  • ¿Puede alguien explicar cómo SharedPreferences almacena un conjunto de cadenas
  • Ciclo de vida de Android SharedPreference
  • Contexto de la aplicación SharedPreferences vs contexto de la actividad
  • ¿Cómo leer las SharedPreferences de otra aplicación (el mismo ID de usuario)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.