Environment.ExternalStorageDirectory для внутреннего / SDCard - PullRequest
3 голосов
/ 29 января 2012

Что именно возвращает Environment.ExternalStorageDirectory? Я прочитал из документации разработчика:

Примечание: не смущайтесь словом "внешний" здесь. Этот каталог лучше всего рассматривать как носитель / общее хранилище. Это файловая система, которая может содержать сравнительно большой объем данных и совместно используется всеми приложениями (не применяет разрешения). Традиционно это SD-карта, но она также может быть реализована как встроенное хранилище в устройстве, которое отличается от защищенного внутреннего хранилища и может быть смонтировано в качестве файловой системы на компьютере.

Правильно ли я понимаю, что если мое устройство имеет большую (16 ГБ) внутреннюю память и нет SD-карты, это вернет путь к внутренней памяти? Или я должен проверить, установлена ​​ли SD-карта, и если нет, используйте ApplicationContext.FilesDir?

Полагаю, я спрашиваю: если моему приложению нужно загрузить 250 МБ данных, как мне узнать, где их хранить? - Как я хочу использовать «правильное» местоположение.

Ответы [ 2 ]

3 голосов
/ 29 января 2012

Правильно ли я понимаю, что если мое устройство имеет большую (16 ГБ) внутреннюю память и нет SD-карты, это вернет путь к внутренней памяти?

Будет возвращенопуть к внешнему хранилищу.На устройстве с описанными вами характеристиками внешнее хранилище будет либо:

  • отдельным разделом данных из 16 ГБ встроенной флэш-памяти (Android 2.x), либо
  • каталог в главном разделе данных этих 16 ГБ встроенной флэш-памяти (Android 3.0 +)

Или я должен проверить, установлена ​​ли SD-карта

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

На Android 2.x, если внешнее хранилище смонтировано на главном ПК, оно недоступно для вашего приложения.Следовательно, если вы поддерживаете Android 2.x, вам нужно проверить, доступно ли внешнее хранилище, независимо от того, как реализовано это внешнее хранилище.

Я полагаю, что я спрашиваю, если мое приложениенеобходимо загрузить 250 МБ данных, как узнать, где их хранить?

Поместите их на внешнее хранилище.Если внешнее хранилище недоступно, не загружайте данные и не говорите пользователю отключить телефон от своего ПК.Существует множество устройств Android 2.x, у которых даже нет 250 МБ встроенной памяти для всех приложений, вместе взятых , не говоря уже о том, что вы используете их.

0 голосов
/ 29 января 2012

Вот еще один поток stackoverflow. Надеюсь, он будет работать для вас.

...