В замешательстве: context.getExternalFilesDir и Environment.getExternalStorageState();

Я разрабатываю Android Studio на различных эмулируемых устройствах.

Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())

всегда возвращал false, пока я не решил эмулировать SD-карты на эмулируемых устройствах.

Но документация на http://developer.android.com/training/basics/data-storage/files.html конкретно указывает, что

«всегда есть два места для хранения, и поведение API одинаково независимо от того, является ли внешнее хранилище съемным или нет».

Похоже, это указывает на то, что внешнее хранилище не обязательно должно относиться к реальной SD-карте и может быть внутренним. Следовательно, зачем мне нужно, чтобы размер эмулируемой SD-карты был больше нуля, чтобы этот код работал? Что я неправильно понимаю или упускаю?

Кроме того, относится ли context.getExternalFilesDir к тем же флагам каталога, что и Environment.getExternalStorageState?

Спасибо,

Тони


person TonyMLake    schedule 02.08.2013    source источник


Ответы (1)


Вам нужно выбрать эмуляцию SD-карт, чтобы указать эмулятор, с которым у вас связано внешнее хранилище. И то, что вы сказали правильно, внешнее хранилище может быть съемным носителем (например, SD-картой) или внутренним (несъемным) хранилищем.

Да, context.getExternalFilesDir возвращает абсолютный путь к каталогу во внешней файловой системе в соответствии с документацией, поэтому ссылается на те же флаги каталога, что и Environment.getExternalStorageState.

person Pradeep    schedule 02.08.2013
comment
Похоже, я не могу рассчитывать на всегда доступность внешнего хранилища. Например, если кто-то подключил, а затем удалил SD-карту, у ОС не будет встроенного хранилища, доступного в качестве внешнего хранилища. Есть ли всегда доступное внешнее хранилище, даже в случае отсутствия SD-карты или извлечения SD-карты? Спасибо еще раз - - person TonyMLake; 03.08.2013
comment
@Pradeep, я запускаю это на физическом устройстве. Попытка закодировать логику, чтобы определить, доступна ли внешняя SD-карта для загрузки файлов или ее нужно переключиться на внутреннюю. Я думал, что getExternalStorageState можно использовать, чтобы определить, присутствует ли внешняя SD-карта или нет. Что мне не хватает? - person justdan0227; 21.10.2015