Способ предварительной загрузки внутренней памяти Android файлами

Я использую FileProvider для обмена файлами с другими приложениями. Мне нужно включить эти файлы в apk. Поскольку FileProvider получает файлы из внутренней памяти /data/data/<pkg-name>, есть ли способ предварительно загрузить эти файлы? Пока единственный найденный мной способ — сначала включить файлы в каталог raw/assets, а затем программно переместить файлы во внутреннюю память.
Это единственный способ или есть лучший рекомендуемый метод? Может ли FileProvider передавать файлы из каталога ресурсов?


person prostock    schedule 19.08.2017    source источник
comment
Это может помочь вам. Поставщик CWAC github.com/commonsguy/cwac-provider   -  person Fr099y    schedule 23.08.2017
comment
Почему вы не можете скачать их с какого-то сервера, когда приложение запускается в первый раз? Нет смысла включать файл в ваше приложение, если он не является частью ресурсов, все файлы можно скачать и сохранить в любую папку по вашему желанию.   -  person Akash Kava    schedule 24.08.2017


Ответы (2)


Вы не можете использовать FileProvider для передачи файла из Asset Directory. Вам придется реализовать свой собственный ContentProvider.

Вот похожие вопросы с ответами, которые могут вам помочь:

Вы также можете использовать CWAC-Provider, который предлагает класс для обработки ресурсов: https://github.com/commonsguy/cwac-provider/blob/master/provider/src/main./java/com/commonsware/cwac/provider/StreamProvider.java

person Arnaud Develay    schedule 22.08.2017

Другим подходом может быть использование файлов расширения APK: файлы расширения.

Это позволяет вам отправлять дополнительные файлы с вашим приложением, особенно если ваш APK достиг предела в 100 МБ.

Файлы расширения сохраняются по следующему пути: <shared-storage>/Android/obb/<package-name>/, который можно получить с помощью getObbDir().

person Christopher    schedule 23.08.2017