Я использую FileProvider
для обмена файлами с другими приложениями. Мне нужно включить эти файлы в apk. Поскольку FileProvider
получает файлы из внутренней памяти /data/data/<pkg-name>
, есть ли способ предварительно загрузить эти файлы? Пока единственный найденный мной способ — сначала включить файлы в каталог raw/assets, а затем программно переместить файлы во внутреннюю память.
Это единственный способ или есть лучший рекомендуемый метод? Может ли FileProvider передавать файлы из каталога ресурсов?
Способ предварительной загрузки внутренней памяти Android файлами
Ответы (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
Другим подходом может быть использование файлов расширения APK: файлы расширения.
Это позволяет вам отправлять дополнительные файлы с вашим приложением, особенно если ваш APK достиг предела в 100 МБ.
Файлы расширения сохраняются по следующему пути: <shared-storage>/Android/obb/<package-name>/
, который можно получить с помощью getObbDir().