Получить каталог sdcard по adb

Я делаю приложение, которое извлекает файлы (сохраненные приложением android) из устройства sdcard по adb. Проблема в том, что разные устройства имеют разные каталоги sdcard

то есть:

  • SD Card
  • SDCard / external_sd

Во-первых, я придумал следующее решение:

  1. Запустить оболочку adb
  2. Ls
  3. Проверьте, существует ли dir «sdcard»
  4. Если да, запустите sdcard / ls и проверьте, существует ли external_sd
  5. Возвращаемое значение.

Но проблема в том, что у меня есть два устройства Samsung GT-I9100 и GT-I9000 и у обоих есть каталог sdcard/external_sd . Когда я проверяю System.getenv("EXTERNAL_STORAGE") возвращается sdcard и другая sdcard/external_sd . Мне нужно извлечь файл, который ранее был сохранен в System.getenv("EXTERNAL_STORAGE") .

Поэтому возникает вопрос: есть ли какая-либо команда для получения каталога sdcard непосредственно из adb, без доступа к коду Android?

Или, может быть, я могу начать работу с начала adb и получить возвращаемое значение? Это возможно?

EDIT: нашел решение:

 adb shell echo $EXTERNAL_STORAGE 

Solutions Collecting From Web of "Получить каталог sdcard по adb"

Если я не понял вас неправильно, вы ищете что-то вроде:

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

Для чего его ценность – использование переменной $ EXTERNAL_STORAGE может дать вам вводящие в заблуждение результаты. У меня здесь планшет HP Slate, который имеет переменную EXTERNAL_STORAGE, установленную в / storage / sdcard0. Однако при использовании команды df (disk free) в оболочке или даже команды mount для отображения свободного места или монтирования становится очевидным следующее:

 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 

Так что внешняя SD-карта на самом деле / ​​mnt / external_sd, вместо значения EXTERNAL_STORAGE возвращает (что является внутренним хранилищем)

Лучше использовать getExternalStorageDirectory () вместо System.getenv("EXTERNAL_STORAGE") Это даст вам каталог внешнего хранилища, независимо от устройства.