Android - Найти все внутреннее и внешнее хранилище - PullRequest
1 голос
/ 16 марта 2012

Итак, я заметил, что от устройства к устройству существует множество различных конфигураций для внутренних и внешних. На моем Evo есть только внутренняя память и внешняя SD-карта, но на Droid Incredible того же года есть внутренняя память, внутренняя SD-карта (~ 8 ГБ) и внешняя SD-карта (по умолчанию 1 ГБ). Предположительно, есть и другие конфигурации, и их будет больше.

Однако все, что я могу найти при перечислении количества доступных носителей, - это такие вещи, как Environment , где вы можете делать такие вещи, как getExternalStorageDirectory (), который возвращает File, а не File [] или что-нибудь подобное. Существует ли более безопасный и обобщенный способ перечисления всех доступных носителей? Вам просто нужно перейти к / mnt / и получить там список, чтобы увидеть все подключенные тома?

1 Ответ

1 голос
/ 16 марта 2012

Существует ли более безопасный обобщенный способ перечисления всех доступных носителей?

С точки зрения SDK имеется внутреннее хранилище (getFilesDir()) и внешнее хранилище (Environment.getExternalStorageDirectory()). На Android 1.x / 2.x это будут отдельные разделы; на Android 3.0+ они будут одним разделом.

По определению, делать что-либо помимо того, что предлагает SDK, будет небезопасно. Нет никаких гарантий относительно имен разделов, их роли, можете ли вы читать с них, можете ли вы записывать в них и т. Д. Даже если бы вы собирали базу данных со всеми возможностями (модель, версия ОС, разделы и их статус), эта база данных будет постоянно устаревать в отношении новых устройств и версий ОС.

Вы можете иметь возможность получить доступ к медиафайлам на других разделах с помощью MediaStore. Например, некоторые производители устройств, которые предлагают SD-карту в дополнение к встроенному внешнему хранилищу, индексируют файлы SD-карты, поэтому любые медиа-файлы, содержащиеся на SD-карте, отображаются в MediaStore. Это может позволить вам использовать контент на других разделах, предоставленных производителем (например, на SD-карте), но AFAIK MediaStore не предоставляет средств для размещения новых файлов на таких разделах.

...