¿Cómo puedo determinar el directorio de almacenamiento de ADB?

9

¿Hay alguna manera de usar ADB para determinar el directorio de almacenamiento externo (equivalente a la llamada a la API de Android Environment.getExternalStorageDirectory())?

notlesh
fuente

Respuestas:

13

adb shell echo $EXTERNAL_STORAGE. Todo el crédito va a Flow por llevarme a experimentar y encontrar esto.

Naturalmente, puede usar cd $EXTERNAL_STORAGEo cualquier otra cosa que pueda necesitar durante una sesión de adb shell o desde un emulador de terminal.

Matthew Read
fuente
2
Buen trabajo en equipo :) +1
Flujo
2
¡Muy bien! ¡Gracias! Tenga en cuenta, sin embargo, que si necesita escapar $ dependiendo de su shell. ejemplo: adb shell echo \ $ EXTERNAL_STORAGE
notlesh
Hmm, resulta que mi Samsung Vibrator me da un valor diferente para $ EXTERNAL_STORAGE que Environment.getExternalStorageDirectory (). Este no es el primer error desagradable que he encontrado en este teléfono.
notlesh
@stephelton Eso es decepcionante. ¿Cuál es incorrecto? $ EXTERNAL_STORAGE es correcto para mí, /mnt/sdcard/external_sd/.
Matthew leyó el
6

No creo que esto sea posible. Ver la publicación de Matthew

Pero tengamos un bloqueo sobre cómo Environment.getExternalStorageDirectory()devuelve el directorio de almacenamiento externo. Un vistazo rápido android/os/Environment.javamuestra que todo este método lo hace, está devolviendo un miembro de archivo constante estático llamado EXTERNAL_STORAGE_DIRECTORY. Esta constante es inicializada por

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

que llama getDirectory()

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

Por lo tanto, el directorio de almacenamiento externo no es más que una variable de entorno del Sistema Java (o un valor predeterminado predefinido). Podría intentar seguir este rastro más lejos. Tal vez el directorio de almacenamiento externo es solo una ruta codificada en algún archivo de configuración del sistema de archivos. O tal vez hay una manera de leer estas variables de entorno a través de adbeso que no sé.

Fluir
fuente
2
Descubrí el comando adb usando esta información, +1.
Matthew Read