Ближайшая вещь к документации, которую я могу найти, касающаяся хранения файлов, - этот пост (см. Ниже, если вы не можете получить к нему доступ), но он оставляет меня с несколькими вопросами.
Мне бы очень, очень, очень хотелось получить грамотное объяснение того, какие пути отображаются в каком хранилище здесь, видя, как мы должны жестко их кодировать и насколько точно мы должны получить к ним доступ. Фактический пример кода будет превосходным. Моя лучшая догадка от возни с этим:
- / sdcard-> сопоставляется с внутренним слотом eMMC, и доступ к нему ограничен.
Environment.getExternalStorageDirectory (); ... все еще возвращает это.
- / media -> сопоставляет внутреннюю память 8 ГБ (я могу написать в это)
- / data ->?
- ? -> сопоставление с дополнительной картой microSD
Как мы можем получить доступ к внешней (необязательной, дополнительной, той, которую вы можете выдвинуть) sdcard, если вместо нее / sdcard отображается в ограниченное хранилище ?
Теперь процитируем документы разработчика Nook:
Фон. Существуют две разные схемы разбиения для NOOK.
Цветные устройства на рынке сегодня, одно из которых доступно только 250 МБ
приложения на / data разделе и один с 4 ГБ доступны для
приложения в разделе / data. В результате крайне важно
что приложения спроектированы и разработаны таким образом, чтобы
эффективно управлять пространством. Приложения, которые этого не сделают, не будут
принимаются к распространению через Магазин.
Техническая рекомендация или решение, связанное с территорией, если ваш
приложение требует большого количества данных (включая, но не ограничиваясь
для изображений, аудио или видео), вы должны загрузить эти
ресурсы во время выполнения и хранить их в большем разделе
устройство. Если ваше приложение будет запрашивать и хранить более
100 МБ данных или ресурсов, которые вы ДОЛЖНЫ соблюдать
Ограничения:
Ваша заявка должна четко и недвусмысленно указываться в описании
при условии, что большое количество данных используется / доставляется
приложение. Вы ДОЛЖНЫ записать свои ресурсы и данные на соответствующие
раздел. Вы можете обнаружить, если устройство имеет увеличенный / данные
разделить следующим образом:
StatFs stat = new StatFs("/data");
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
long megAvailable = bytesAvailable / 1048576;
if (megAvailable > 1000){
... write your resources in /data
} else {
... write your resources on /mnt/media ...
}
Для записи данных в личное пространство вашего приложения в / data
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE);
Ваша заявка НЕ должна принимать
наличие SD-карты на устройстве, но вы можете проверить ее с помощью звонка
до
* 1 035 * Environment.getExternalStorageState (); Если SD-карта не найдена,
ваше приложение ДОЛЖНО завершаться корректно с уведомлением пользователя
что касается причины выхода.
Помните, что для доступа к разделу / media, а также
ExternalStorage необходимо указать в манифесте:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>