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

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

то есть:

  • SDCard
  • SDCard/external_sd

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

  • запустить оболочку adb
  • Ls
  • Проверьте, существует ли dir "sdcard"
  • Если да, запустите sdcard/ls и проверьте, существует ли external_sd
  • возвращаемое значение.

Но проблема в том, что у меня есть два устройства 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

Ответы

Ответ 1

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

[email protected]:~$ adb shell cd \$EXTERNAL_STORAGE
[email protected]:~$ adb shell ls \$EXTERNAL_STORAGE
[email protected]:~$ adb shell echo \$EXTERNAL_STORAGE

Ответ 2

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

[email protected]:/ $ 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 возвращает (это внутреннее хранилище)

Ответ 3

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