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

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

24 голосов
/ 21 февраля 2012

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

т.е:

  • SDCard
  • SDCard / external_sd

Сначала я изобрел следующее решение:

  1. запустить adb shell
  2. Ls
  3. Проверьте, существует ли каталог "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's am start и получить возврат значение? Это возможно?

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

adb shell echo $EXTERNAL_STORAGE

Ответы [ 3 ]

27 голосов
/ 21 февраля 2012

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

emanuele@Nabucodonosor:~$ adb shell cd \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb shell ls \$EXTERNAL_STORAGE
emanuele@Nabucodonosor:~$ adb shell echo \$EXTERNAL_STORAGE
21 голосов
/ 22 марта 2015

Для чего оно стоит - использование переменной $ EXTERNAL_STORAGE может привести к вводящим в заблуждение результатам.У меня есть планшет HP Slate, в котором переменная EXTERNAL_STORAGE установлена ​​в / storage / sdcard0.Однако при использовании команды df (без диска) на оболочке или даже команды 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 (которое является внутренним хранилищем)

0 голосов
/ 21 февраля 2012

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

...