Android — найти все внутренние и внешние хранилища

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

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


person Paul    schedule 16.03.2012    source источник


Ответы (1)


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

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

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

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

person CommonsWare    schedule 16.03.2012