Come posso visualizzare il file delle preferenze condivise utilizzando Android Studio?


101

Utilizzo le preferenze condivise per memorizzare determinati valori per la mia app. Vorrei vedere il file in cui le informazioni sono effettivamente memorizzate sul mio telefono. Ho trovato molti modi per farlo su Eclipse, ma sto eseguendo il debug su Android Studio. Il mio telefono è rootato. Ho letto che avere l'accesso come root è importante per leggere questi tipi di file. Se non è possibile, cercherò come accedere alle informazioni tramite il mio programma, quindi le visualizzerò in log cat. Si spera, però, di poter visualizzare il file direttamente sul telefono poiché è molto più semplice. Grazie.


Installa ES File Explorer e abilita la navigazione root. Potrai quindi aprirlo direttamente sul telefono.
CurlyPaul

3
prova a utilizzare adb pull per recuperare il file sul desktop. adb pull /data/data/<packagename>/shared_prefs/prefs.xml
Lal

2
OPPURE vai a Esplora file e nella struttura ad albero dei file, trova la cartella dei dati della tua app in /data/data/com.your-package/shared_prefs. Il file delle preferenze sarà lì, come XML. Copialo dal dispositivo e divertiti. Nell'angolo in alto a destra della vista Esplora file, ci sono due pulsanti icona: uno con un disco e uno con un telefono cellulare. Questi pulsanti ti permetteranno di copiare file da e verso il telefono / emulatore, rispettivamente.
Lal

1
Per qualche motivo il mio file xml delle preferenze si chiama <PACKAGENAME> _preferences.xml
JPM

Risposte:


95

Da Android Studio, avvia Android Device Monitor, vai a Esplora file e cerca "/ data / data / <nome del tuo pacchetto> / shared_prefs /". Troverai l'XML lì ... e puoi anche copiarlo per l'ispezione.

Se hai un dispositivo senza root non è possibile farlo direttamente da Android Studio. Tuttavia, puoi accedere al file adb shellpurché l'applicazione sia la versione di debug.

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

Dopodiché puoi estrarre il file dalla directory / sdcard con adb.


Non riesco ad accedere a questa cartella da Device Monitor. È richiesto il root?
Marian Klühspies

2
Il secondo metodo funziona per i dispositivi non rooted. Dopo aver copiato il file sulla scheda SD, puoi uscire da adb ed eseguire adb pull "/ sdcard / your_preferences_file" e otterrai un file xml nella tua directory corrente che puoi ispezionare.
Bebop_

4
Puoi effettivamente prendere queste informazioni da un emulatore senza root, se puoi eseguire il debug in questo modo. Se sei su un dispositivo fisico, avrai bisogno di root.
Booger

3
cerca il file explorer del dispositivo nell'angolo in basso a destra di AndroidStudio. Ti fornirà un facile accesso al file system del dispositivo
Maksim Turaev

2
Utilizzando Device File Explorer, posso accedere alle preferenze condivise senza accesso root
Devansh Maurya,

77

Il Device File Explorer che fa parte di Android Studio 3.x è davvero ottimo per esplorare i file delle preferenze, gli elementi della cache o il database.

  1. Preferenze condivise / data / dati // directory shared_prefs

inserisci qui la descrizione dell'immagine

Sembra qualcosa del genere

inserisci qui la descrizione dell'immagine

Per aprire Esplora file dispositivo:

Fare clic su Visualizza> Finestre degli strumenti> Esplora file del dispositivo o fare clic sul pulsante Esplora file del dispositivo nella barra della finestra degli strumenti.

inserisci qui la descrizione dell'immagine


13
Apri Device File Explorer (in basso a destra dello schermo).
Apit John Ismail

47

Stetho

Puoi utilizzare http://facebook.github.io/stetho/ per accedere alle tue preferenze condivise mentre l'applicazione è in modalità debug. Nessuna radice

Caratteristiche:

  1. visualizzare e modificare le preferenze condivise
  2. visualizzare e modificare sqLite db
  3. visualizza visualizza gerarchia
  4. monitorare le richieste di rete http
  5. visualizzare lo streaming dallo schermo del dispositivo
  6. e altro ancora ...

inserisci qui la descrizione dell'immagine

Configurazione di base:

  1. nel build.gradle aggiungi compile 'com.facebook.stetho:stetho:1.5.0'
  2. nell'applicazione onCreate () add Stetho.initializeWithDefaults(this);
  3. in Chrome sul tuo PC vai su chrome: // inspect /

AGGIORNAMENTO: Flipper

Flipper è un'alternativa più recente di Facebook. Ha più funzionalità ma per il momento la scrittura è disponibile solo per Mac, leggermente più difficile da configurare e manca di debug del database, mentre offre un ispettore di layout estremamente migliorato

Puoi anche usare il suggerimento di @Jeffrey:

  • Apri Device File Explorer (in basso a destra dello schermo)
  • Vai a data / data / com.yourAppName / shared_prefs

Può funzionare sugli emulatori? Non riesco a farlo funzionare
EduardoMaia

@EduardoMaia Dovrebbe. Lo uso con l'emulatore tutti i giorni. Puoi creare una domanda con screenshot, quindi cercherò di aiutarti.
Maksim Turaev

@EduardoMaia Puoi provare a fare quanto segue: 1. Clonare il repository stetho di Facebook. 2. Importa questo progetto in LATEST Android Studio (File-> Importa -> "scegli settings.gradle") 3. Accetta di aggiornare il plugin gradle. 4. Avvia Android Emulator (nel mio caso API 24) 5. Avvia stetho-sample (selezionalo dal menu Esegui configurazione accanto alla freccia verde 6. Sul tuo PC apri l'ultimo browser Chrome 7. vai su chrome: // ispeziona indirizzo 8. scegli il tuo emulatore nell'elenco 9. Nella finestra aperta vai alla scheda Risorse 10. Trova le tue preferenze condivise nel menu LocalStorage sul lato sinistro 11. Nell'applicazione gioca con la bandiera booleana
Maksim Turaev

Ho risolto il mio problema ieri senza dover visualizzare le preferenze condivise. Ma proverò questo passo dopo passo un altro giorno. Grazie.
EduardoMaia

14

Puoi semplicemente creare un'attività speciale a scopo di debug:

@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.

Questo è stato molto utile, ma non si adattava perfettamente alle mie esigenze. Ho aggiunto una modifica che consente più file di preferenze condivise
Christopher Rucinski

Grazie, ho solo problemi a capire come accettare le modifiche
cYrixmorten

È stato negato da altri. Hanno detto che dovrebbe essere la sua risposta, quindi l'ho messa come una nuova risposta. Inizialmente ho modificato la tua risposta perché sono stato in grado di fare ciò che ho fatto solo quando ho visto la tua risposta.
Christopher Rucinski

Va bene :-) sì, mi è venuto in mente dopo che doveva essere rivisto da altri
cYrixmorten

13

Android Studio -> Device File Explorer (angolo in basso a destra) -> data -> data -> {package.id} -> shared-prefs

Nota: è necessario collegare il dispositivo mobile ad Android Studio e l'applicazione selezionata dovrebbe essere in modalità di debug


10

Questo è un vecchio post, ma ho pensato di dover inserire una risposta grafica qui poiché la domanda riguarda la visualizzazione del file SharedPreferences.xml Android Studio. Quindi eccolo qui.

Vai a Strumenti -> Monitoraggio dispositivo Android. Apri il monitor del dispositivo facendo clic su di esso.

inserisci qui la descrizione dell'immagine

Quindi è necessario selezionare la scheda Esplora file nel monitor del dispositivo. Trova la cartella dei dati e trova un'altra cartella dei dati al suo interno. Conterrà una cartella con il nome del pacchetto dell'applicazione e ci sarà il file desiderato SharedPreferences.xml.

inserisci qui la descrizione dell'immagine

Seleziona il SharedPreferences.xml file, quindi trascina e salva il file sul tuo computer utilizzando il pulsante contrassegnato nell'angolo in alto a destra dell'immagine sopra.

Ho usato un emulatore di dispositivo.


1
Grazie al tuo post ho appreso di developer.android.com/studio/debug/device-file-explorer che è il nuovo modo per fare lo stesso che stai spiegando qui.
malarres

Bello sapere che potrei aiutare! Sei il benvenuto.
Reaz Murshed

4

File di preferenze condivisi singoli o multipli

Se hai più Shared Preferencefile, ecco un buon modo per mostrarli tutti, ma puoi anche passare anche 1 nome file.

  • loadSharedPrefs("pref_name");

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

Scegli una delle seguenti opzioni in base alle tue esigenze ...

Valori di tipo singolo

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

}

Valori di più tipi

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

}

}

Uscita Logcat

I miei Shared Preferencevalori sono tutti String, ma questo è l'output utilizzando uno dei 2 metodi sopra ...

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

4

Un altro modo semplice sarebbe utilizzare un'app root explorer sul tuo telefono.

Quindi vai su /data/data/package name/shared preferences folder/name of your preferences.xml, puoi usare ES File explorer e vai al rootdel tuo dispositivo, no sd card.


1
Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post: puoi sempre commentare i tuoi post e, una volta che avrai una reputazione sufficiente, potrai commentare qualsiasi post . - Dalla recensione
Luca Detomi

@LucaDetomi sai di cosa ho finito qui
user5291072

La tua risposta è stata contrassegnata come troppo breve. Le risposte dovrebbero contenere dettagli che permettano agli utenti di capire "perché" potrebbe essere una buona risposta e forse la migliore. Ti consiglio di aggiungere ulteriori dettagli che aiutano a comprendere i principi e magari ad adattarli ad altre questioni simili
Luca Detomi

4

Per aprire condiviso preferencein Android Studio

Apri il file di Device Explorer dal lato destro: data> data>> shared_prefs

trova l'immagine allegata per una descrizione più dettagliata



2

Esegui l'applicazione in Emulator dopo aver inserito alcuni dati, basta chiudere l'applicazione.

Ora apri DDMS o Android Monitor e seleziona il tuo emulatore, sul lato destro puoi vedere Esplora file, cerca la cartella Dati al suo interno e cerca il pacchetto dell'applicazione che hai creato, in cui puoi trovare il file delle preferenze condivise aperto esso, puoi vedere il file XML, fare clic su di esso e fare clic sul pulsante Estrai un file dal dispositivo nell'angolo in alto a destra.

Il file XML verrà salvato nella posizione desiderata, quindi puoi aprirlo utilizzando un qualsiasi editor come Notepad ++ e puoi visualizzare i dati che hai inserito.


In Android Studio 3.0 , l'ho trovato in Device File Explorer > dati> dati> (nome pacchetto)> shared_prefs> (nome pacchetto) _preferences.xml
Josselin

2

In Device File Explorer seguire il percorso seguente: -

/data/data/com.**package_name**.test/shared_prefs/com.**package_name**.test_preferences.xml

1

Trovo sempre utili questi comandi in console:

  1. Trova il nome file corretto

    adb shell

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

  2. Ottieni il file nella directory locale

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

  3. Controllalo nel tuo $local_dir.


1

Se stai usando un emulatore puoi vedere il sharedPrefs.xmlfile sul terminale con questi comandi:

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

dopodiché puoi usare adb unrootse non vuoi mantenere il dispositivo virtuale rootato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.