Как вам известно, доступ к внутреннему хранилищу обычно ограничен определенными каталогами для каждого приложения в соответствии с разрешениями. Это должно остановить одно приложение, считывающее данные из другого, и доступ к системным файлам без использования API. Это имеет смысл, поскольку, например, если у вас есть приложение для интернет-банкинга, вы не хотите, чтобы другие приложения имели доступ к любым его кэшированным данным.
Каждое приложение получает данные для хранения в каталоге под /data/data
. Однако обычно вы не указываете пути явно, а используете такие методы, как Context.openFileOutput()
, который создает файл в соответствующем подкаталоге вашего приложения напрямую.
Я согласен с вами, что маловероятно, что большая часть 8 ГБ хранилища Incredible будет использоваться для раздела /data
.
Так что, если у них будет отдельный раздел, позволяющий легко хранить музыку и фотографии во внутренней памяти телефона, им придется делать это так, чтобы это было совместимо с существующими приложениями. Это означает использование Environment.getExternalStorageDirectory()
, но поскольку Incredible также поддерживает SD-карты, вы правы в том, что не совсем понятно, как это может работать.
В группе разработчиков Android Android есть ветка , где обсуждается именно этот вопрос. Хотя пока нет ответа (на момент написания) о том, как работает Incredible, есть пост, в котором говорится, что Samsung Galaxy решает ту же проблему следующим образом:
- Внутреннее хранилище установлено в
/sdcard
- Если также имеется SD-карта, ее можно найти по адресу
/sdcard/sd
Это кажется разумным решением, поскольку оно будет совместимо с существующими приложениями, включая те, которые по ошибке жестко закодированы /sdcard
вместо использования Environment.getExternalStorageDirectory()
.
Поэтому мой совет - использовать Environment.getExternalStorageDirectory()
, когда вы ищете большие области для хранения - или SD-карту, или внутреннюю часть телефона - и надеяться, что каждый телефон выдаст что-нибудь разумное.