Ответ 1
Если я не понял вас неправильно, вы ищете что-то вроде:
[email protected]:~$ adb shell cd \$EXTERNAL_STORAGE
[email protected]:~$ adb shell ls \$EXTERNAL_STORAGE
[email protected]:~$ adb shell echo \$EXTERNAL_STORAGE
Я делаю приложение, которое извлекает файлы (сохраненные приложением android) из устройства sdcard по adb. Проблема в том, что разные устройства имеют разные каталоги sdcard
то есть:
Во-первых, я придумал следующее решение:
Но проблема в том, что у меня есть два устройства 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
Если я не понял вас неправильно, вы ищете что-то вроде:
[email protected]:~$ adb shell cd \$EXTERNAL_STORAGE
[email protected]:~$ adb shell ls \$EXTERNAL_STORAGE
[email protected]:~$ adb shell echo \$EXTERNAL_STORAGE
Для чего его ценность - использование переменной $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 возвращает (это внутреннее хранилище)
Лучше использовать getExternalStorageDirectory() вместо System.getenv("EXTERNAL_STORAGE")
Это даст вам каталог внешнего хранилища, независимо от устройства.