studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android adb sd-card

para - manual de programacion android pdf



Obtener directorio sdcard por adb (3)

Estoy creando una aplicación que extrae archivos (Guardado por la aplicación de Android) del dispositivo sdcard by adb. El problema es que diferentes dispositivos, tienen varios directorios sdcard.

es decir:

  • tarjeta SD
  • sdcard / external_sd

En primer lugar inventé la siguiente solución:

  1. ejecutar adb shell
  2. ls
  3. Compruebe si dir "sdcard" existe
  4. Si es así, ejecute sdcard / ls y verifique si existe external_sd
  5. valor de retorno.

Pero el problema es que tengo dos dispositivos samsung GT-I9100 y GT-I9000 y ambos tienen un directorio sdcard/external_sd . Cuando estoy comprobando System.getenv("EXTERNAL_STORAGE") uno devuelve sdcard y otro sdcard/external_sd . Necesito extraer el archivo que se guardó previamente en System.getenv("EXTERNAL_STORAGE") .

Entonces la pregunta es: ¿existe algún comando para obtener el directorio sdcard directamente desde adb, sin acceso al código de Android?

¿O tal vez puedo comenzar la actividad con adb''s am start y obtener un valor de retorno? es posible?

EDITAR: Encontré la solución:

adb shell echo $EXTERNAL_STORAGE


Es mejor usar getExternalStorageDirectory() lugar de System.getenv("EXTERNAL_STORAGE") Esto le dará un directorio de almacenamiento externo independientemente del dispositivo.


Para que valga la pena, usar la variable $ EXTERNAL_STORAGE puede darte resultados engañosos. Tengo una tableta HP Slate aquí, que tiene la variable EXTERNAL_STORAGE establecida en / storage / sdcard0. Sin embargo, cuando se usa el comando df (disk free) en el shell, o incluso el comando mount para mostrar el espacio libre o los montajes, lo siguiente es obvio:

shell@android:/ $ df Filesystem Size Used Free Blksize /dev 452.7M 36.0K 452.7M 4096 /mnt/asec 452.7M 0.0 K 452.7M 4096 /mnt/obb 452.7M 0.0 K 452.7M 4096 /system 629.9M 468.5M 161.5M 4096 /data 5.7 G 2.3 G 3.5 G 4096 /cache 435.9M 16.4M 419.5M 4096 /storage/sdcard0 5.7 G 2.3 G 3.5 G 4096 /mnt/external_sd 29.3G 64.0K 29.3G 32768

así, la tarjeta sd externa es de hecho / mnt / external_sd, en lugar del valor que devuelve EXTERNAL_STORAGE (que es el almacenamiento interno)


Si no te he entendido mal, estás buscando algo como:

emanuele@Nabucodonosor:~$ adb shell cd /$EXTERNAL_STORAGE emanuele@Nabucodonosor:~$ adb shell ls /$EXTERNAL_STORAGE emanuele@Nabucodonosor:~$ adb shell echo /$EXTERNAL_STORAGE