Come posso determinare la directory di archiviazione da ADB?


9

Esiste un modo in cui posso usare ADB per determinare la directory di archiviazione esterna (equivalente della chiamata API Android Environment.getExternalStorageDirectory())?

Risposte:


13

adb shell echo $EXTERNAL_STORAGE. Tutto il merito va a Flow per avermi portato a sperimentare e trovare questo.

Naturalmente puoi usare cd $EXTERNAL_STORAGEo qualsiasi altra cosa tu possa aver bisogno durante una sessione della shell adb o da un emulatore di terminale.


2
Buon lavoro di squadra :) +1
Flusso

2
Molto bene! Grazie! Nota, tuttavia, che potrebbe essere necessario uscire da $ a seconda della shell. esempio: adb shell echo \ $ EXTERNAL_STORAGE
notlesh,

Hmm, risulta che il mio Samsung vibrante mi dà un valore diverso per $ EXTERNAL_STORAGE rispetto a Environment.getExternalStorageDirectory (). Questo non è il primo brutto bug che ho trovato su questo telefono.
notlesh,

@stephelton Questo è deludente. Quale è sbagliato? $ EXTERNAL_STORAGE è corretto per me, /mnt/sdcard/external_sd/.
Matteo Leggi il

6

Non penso che sia possibile. Vedi il post di Matthew

Ma facciamo un blocco su come Environment.getExternalStorageDirectory()restituisce la directory di archiviazione esterna. Una rapida occhiata android/os/Environment.javamostra che tutto questo metodo fa, restituendo un membro File con costante statica chiamato EXTERNAL_STORAGE_DIRECTORY. Questa costante è inizializzata da

private static final File EXTERNAL_STORAGE_DIRECTORY
        = getDirectory("EXTERNAL_STORAGE", "/sdcard");

che chiama getDirectory()

static File getDirectory(String variableName, String defaultPath) {
    String path = System.getenv(variableName);
    return path == null ? new File(defaultPath) : new File(path);
}

Quindi la directory di archiviazione esterna non è altro che una variabile di ambiente di sistema java (o un valore predefinito predefinito). Potresti provare a seguire ulteriormente questa traccia. Forse la directory di archiviazione esterna è solo un percorso codificato in alcuni file di configurazione sul filesystem. O forse c'è un modo per leggere queste variabili d'ambiente tramite adbquello che non conosco.


2
Ho capito il comando adb usando queste informazioni, +1.
Matteo Leggi il
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.