¿Cómo puedo ver el archivo de preferencias compartido usando Android Studio?

101

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

JayUser
fuente
Instale ES File Explorer y habilite la exploración raíz. Entonces podrás abrirlo directamente en el teléfono.
CurlyPaul
3
intente usar adb pull para recuperar el archivo en el escritorio. adb pull /data/data/<packagename>/shared_prefs/prefs.xml
Lal
2
O vaya al explorador de archivos y, en el árbol de archivos, busque la carpeta de datos de su aplicación en /data/data/com.your-package/shared_prefs. El archivo de preferencias estará allí, como XML. Cópialo del dispositivo y disfrútalo. En la esquina superior derecha de la vista del Explorador de archivos, hay dos botones de icono: uno con un disco y otro con un teléfono móvil. Estos botones le permitirán copiar archivos desde y hacia el teléfono / emulador, respectivamente.
Lal
1
Por alguna razón, mi archivo xml de preferencias se llama <PACKAGENAME> _preferences.xml
JPM

Respuestas:

95

Desde Android Studio, inicie Android Device Monitor, vaya al Explorador de archivos y busque "/ data / data / <nombre de su paquete> / shared_prefs /". Allí encontrará el XML ... 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 adb shellsiempre 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.

George Dima
fuente
No puedo acceder a esta carpeta desde Device Monitor. ¿Se requiere Root?
Marian Klühspies
2
El segundo método funciona para dispositivos no rooteados. Después de copiar el archivo a la tarjeta sd, puede salir de adb y ejecutar adb pull "/ sdcard / your_preferences_file" y obtendrá un archivo xml en su directorio actual que puede inspeccionar.
Bebop_
4
De hecho, puede obtener esta información de un emulador sin root, si puede depurar de esa manera. Si está en un dispositivo físico, necesitará root.
Booger
3
busque el explorador de archivos del dispositivo en la esquina inferior derecha de AndroidStudio. Le proporcionará un fácil acceso al sistema de archivos del dispositivo
Maksim Turaev
2
Usando el Explorador de archivos del dispositivo, puedo acceder a las preferencias compartidas sin acceso de root
Devansh Maurya
77

El Explorador de archivos de dispositivo que forma parte de Android Studio 3.x es realmente bueno para explorar sus archivos de preferencias, elementos de caché o base de datos.

  1. Preferencias compartidas / data / data // directorio shared_prefs

ingrese la descripción de la imagen aquí

Se parece a esto

ingrese la descripción de la imagen aquí

Para abrir el Explorador de archivos del dispositivo:

Haga clic en Ver> Ventanas de herramientas> Explorador de archivos del dispositivo o haga clic en el botón Explorador de archivos del dispositivo en la barra de la ventana de herramientas.

ingrese la descripción de la imagen aquí

phnmnn
fuente
13
Abra el Explorador de archivos del dispositivo (parte inferior derecha de la pantalla).
Apit John Ismail
47

Stetho

Puede usar 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 preferencias compartidas
  2. ver y editar sqLite db
  3. ver ver jerarquía
  4. monitorear las solicitudes de red http
  5. ver la transmisión desde la pantalla del dispositivo
  6. y más....

ingrese la descripción de la imagen aquí

Configuración básica:

  1. en el build.gradle agregar compile 'com.facebook.stetho:stetho:1.5.0'
  2. en la aplicación onCreate () agregar Stetho.initializeWithDefaults(this);
  3. en Chrome en su PC vaya a chrome: // inspeccionar /

ACTUALIZACIÓN: Flipper

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 la base de datos, mientras que presenta un inspector de diseño extremadamente mejorado.

También puede utilizar 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
Maksim Turaev
fuente
¿Puede esto funcionar en emuladores? Parece que no puedo hacer que funcione
EduardoMaia
@EduardoMaia Debería. Lo uso con emulador todos los días. Puede crear una pregunta con capturas de pantalla, así que intentaré ayudarlo.
Maksim Turaev
@EduardoMaia Puede intentar hacer lo siguiente: 1. Clonar el repositorio stetho de facebook. 2. Importe este proyecto a ÚLTIMO Android Studio (Archivo-> Importar -> "elija settings.gradle") 3. Acepte actualizar el complemento de Gradle. 4. Inicie el emulador de Android (en mi caso API 24) 5. Inicie stetho-sample (selecciónelo en el menú de configuración de ejecución junto a la flecha verde 6. En su PC, abra el último navegador Chrome 7. vaya a chrome: // inspeccione la dirección 8. elige tu emulador en la lista. 9. En la ventana abierta, ve a la pestaña Recursos. 10. Encuentra tus preferencias compartidas en el menú LocalStorage en el lado izquierdo. 11. En la aplicación, juega con bandera booleana
Maksim Turaev
Arreglé mi problema ayer sin necesidad de ver las preferencias compartidas. Pero intentaré esto paso a paso otro día. Gracias.
EduardoMaia
14

Simplemente puede crear una actividad especial con fines de depuración:

@SuppressWarnings("unchecked")
public void loadPreferences() {
// create a textview with id (tv_pref) in Layout.
TextView prefTextView;
prefTextView = (TextView) findViewById(R.id.tv_pref);
    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;
        }
        // Every new preference goes to a new line
        prefTextView.append(printVal + "\n\n");     
    }
}
// call loadPreferences() in the onCreate of your Activity.
cYrixmorten
fuente
Esto fue muy útil, pero no se ajustaba a mis necesidades. Agregué una edición que permite múltiples archivos de preferencias compartidas
Christopher Rucinski
Gracias, estoy teniendo problemas para averiguar cómo aceptar las ediciones
cYrixmorten
Otros lo negaron. Dijeron que debería ser su propia respuesta, así que la planteo como una nueva respuesta. Originalmente, solo edité tu respuesta porque solo pude hacer lo que hice cuando vi tu respuesta.
Christopher Rucinski
Muy bien :-) sí, se me ocurrió después de que otros tuvieron que revisarlo
cYrixmorten
13

Android Studio -> Explorador de archivos del dispositivo (esquina inferior derecha) -> datos -> datos -> {package.id} -> preferencias compartidas

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

Niranjan
fuente
10

Esta es una publicación antigua, pero pensé que debería poner una respuesta gráfica aquí, ya que la pregunta es sobre cómo ver el SharedPreferences.xmluso de Android Studio. Así que aquí va.

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

ingrese la descripción de la imagen aquí

Luego, debe seleccionar la pestaña Explorador de archivos en el monitor del dispositivo. Busque 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 deseado SharedPreferences.xml.

ingrese la descripción de la imagen aquí

Seleccione el SharedPreferences.xmlarchivo 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 usado un emulador de dispositivo.

Reaz Murió
fuente
1
Gracias a tu publicación aprendí sobre developer.android.com/studio/debug/device-file-explorer, que es la nueva forma de hacer lo mismo que estás explicando aquí.
malarres
¡Es bueno saber que puedo ayudar! De nada.
Reaz Murshed
4

Archivos de preferencias compartidos únicos o múltiples

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

  • loadSharedPrefs("pref_name");

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

Elija uno de los siguientes para satisfacer sus necesidades ...

Valores de tipo único

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 varios tipos

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 Shared Preferencevalores son todos String, pero esta es la salida 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 ------------------------------------
Christopher Rucinski
fuente
4

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

Luego vaya a /data/data/package name/shared preferences folder/name of your preferences.xml, puede usar el Explorador de archivos ES y vaya a la rootde su dispositivo, no sd card.

usuario5291072
fuente
1
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones y, una vez que tenga suficiente reputación , podrá comentar cualquier publicación . - De la crítica
Luca Detomi
@LucaDetomi ya sabes de lo que me voy
user5291072
Tu respuesta fue marcada como demasiado corta. Las respuestas deben contener detalles que permitan a los usuarios entender "por qué" podría ser una buena respuesta y quizás la mejor. Le sugiero que agregue más detalles que ayuden a comprender los principios y tal vez adaptarlo a otros problemas similares
Luca Detomi
4

Para abrir compartido preferenceen Android Studio

Abra el archivo del explorador de dispositivos desde el lado derecho: datos> datos>> preferencias_compartidas

busque la imagen adjunta para obtener más descripción

Shwetank
fuente
3

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 usa la base de datos de depuración de Android

Jeffrey
fuente
2

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

Ahora abra el DDMS o el Monitor de Android y seleccione su emulador, en el lado derecho puede ver el Explorador de archivos, busque la carpeta de Datos en él y busque el paquete de aplicación que ha creado, en el que puede encontrar el archivo de preferencias compartidas abierto él, 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 deseada, luego podrá abrirlo usando cualquier editor como notepad ++ y podrá ver los datos que ingresó.

Naren
fuente
En Android Studio 3.0 , lo encontré en Device File Explorer > datos> datos> (nombre del paquete)> shared_prefs> (nombre del paquete) _preferences.xml
Josselin
2

En el Explorador de archivos del dispositivo, siga la ruta a continuación: -

/data/data/com.**package_name**.test/shared_prefs/com.**package_name**.test_preferences.xml
neelkanth_vyas
fuente
1

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. Obtenga el archivo en el directorio local

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

  3. Compruébalo en tu $local_dir.

Rosa
fuente
1

Si está utilizando un emulador, puede ver el sharedPrefs.xmlarchivo en la terminal con estos comandos:

  • adb root
  • cat /data/data/<project name>/shared_prefs/<xml file>

después de eso, puede usarlo adb unrootsi no desea mantener el dispositivo virtual rooteado.

Rodrirokr
fuente