1

Я экспериментирую с «Adoptable storage», представленным в Android Marshmallow, и мне нужно руководствоваться ожидаемым поведением и тем, как приложения должны обрабатывать «Adoptable storage».Каково ожидаемое поведение Adoptable Storage на Android M и как оно должно обрабатываться приложениями?

  • Формат «микро SD» карты в качестве усыновлен хранения с помощью «Format в качестве внутреннего»
  • После формата сделано, есть 2 варианта пользователю предоставляется следующим образом:
    1. Move Теперь
    2. Переместить Позже

а. Переместить сейчас: Когда эта опция выбрана пользователем, путь, возвращаемый getExternalFilesDirs , это «/ storage/emulated/0/Android/data/PACKAGE_NAME/files», и это фактически указывает на файловую систему микро SD карта.

b. Move Later: Когда эта опция выбрана пользователем, путь, возвращаемый getExternalFilesDirs , это «/ storage/emulated/0/Android/data/PACKAGE_NAME/files», и он фактически указывает на файловую систему встроенного встроенного память.

В обоих случаях приложения могут видеть только одно хранилище, а другое хранилище полностью недоступно Приложениями для хранения таких данных, как Фотографии, Видео и т. Д. Есть ли способ доступа к пути хранения как для Внутренняя и микро SD-карта, когда карта micro SD отформатирована как «Adoptable storage»?

Помимо this documentation, я не смог найти подробную документацию о том, как приложения должны обрабатывать это принятое хранилище. Есть ли какой-либо API, который приложение должно использовать?

Пример:

Пусть говорят, если пользователь телефон имеет внутреннюю память 32 ГБ и микро SD карты 32 ГБ. Если карта отформатирована как «переносное хранилище», для хранения данных доступны 32 ГБ (внутренний) и 32 ГБ (карта micro SD).

Но если пользователь отформатирует карту как «Внутренняя память», пользователь может сохранять данные (фотографии/видео/музыку и т. Д.) Только в любом из этих 32 ГБ места хранения, но не в обоих местах. Система предоставляет возможность «Миграция данных» между местами хранения (внутренняя и микро SD-карта и наоборот), но приложения могут использовать только 32 ГБ хранилища (пользователь эффективно теряет 32 ГБ памяти для хранения медиафайлов и можно использовать только для установки приложений?).

Является ли это ожидаемым поведением?

Примечание: Устройства, используемые Тестовые - Moto X Play & HTC 10 - Как работает Android 6.0.1

ответ

1

getExternalFilesDir() всегда указывает на внешнее запоминающее устройство, которое может или не может быть доступна. Используйте getFilesDir(), чтобы динамически получить путь к тому месту, где хранится приложение.

Не храните результат этого, так как Adapttable Storage может перемещать ваше приложение в любое время. Из документов:

Возвращаемый путь может меняться со временем, если вызывающее приложение перемещается на принятое запоминающее устройство, поэтому должны сохраняться только относительные пути.