Как я могу определить каталог хранения из ADB?

9

Можно ли использовать ADB для определения каталога внешнего хранилища (эквивалент вызова API Android Environment.getExternalStorageDirectory())?

notlesh
источник

Ответы:

13

adb shell echo $EXTERNAL_STORAGE, Все заслуги передаются Потоку за то, что он заставил меня поэкспериментировать и найти это.

Естественно, вы можете использовать cd $EXTERNAL_STORAGEвсе, что вам может понадобиться во время сеанса оболочки adb или из эмулятора терминала.

Мэтью Рид
источник
2
Хорошая командная работа :) +1
поток
2
Отлично! Спасибо! Обратите внимание, что если вам может понадобиться экранировать $ в зависимости от вашей оболочки. пример: adb shell echo \ $ EXTERNAL_STORAGE
notlesh
Хм, оказывается, что мой самсунг живой дает мне другое значение для $ EXTERNAL_STORAGE, чем Environment.getExternalStorageDirectory (). Это не первая неприятная ошибка, которую я нашел на этом телефоне.
Нотлеш
@stephelton Это разочаровывает. Какой из них неверный? $ EXTERNAL_STORAGE является правильным для меня /mnt/sdcard/external_sd/.
Мэтью Прочитано
6

Я не думаю, что это возможно. Посмотреть сообщение Мэтью

Но давайте заблокируем, как Environment.getExternalStorageDirectory()возвращает каталог внешнего хранилища. Быстрый просмотр android/os/Environment.javaпоказывает, что все, что делает этот метод, возвращает статическую константу, вызываемую членом File EXTERNAL_STORAGE_DIRECTORY. Эта константа инициализируется

private static final File EXTERNAL_STORAGE_DIRECTORY
        = getDirectory("EXTERNAL_STORAGE", "/sdcard");

какие звонки getDirectory()

static File getDirectory(String variableName, String defaultPath) {
    String path = System.getenv(variableName);
    return path == null ? new File(defaultPath) : new File(path);
}

Таким образом, каталог внешнего хранилища - это не что иное, как переменная окружения java System (или предопределенное значение по умолчанию). Вы можете попытаться проследить этот след дальше. Возможно, каталог внешнего хранилища - это просто жестко заданный путь в некотором файле конфигурации в файловой системе. Или, может быть, есть способ зачитать эти переменные окружения, adbкоторые я не знаю.

поток
источник
2
Я понял команду adb, используя эту информацию, +1.
Мэтью Прочитал