Я работаю над функцией, где мое приложение будет загружать файлы с сервера, а затем разрешать открывать эти файлы во внешних сторонних приложениях (при условии, что у пользователя установлены приложения, которые могут просматривать файл типов).Android: Совместное использование загруженных файлов
Файлы загружаются и сохраняются в виде массивов байтов с некоторыми сопутствующими метаданными, которые включают в себя тип MIME и расширение файла.
Пользовательский ContentProvider
кажется очевидным путем, так как моему приложению необходимо сохранить контроль над загруженными файлами - то есть доступ к другим приложениям должен быть доступен только для чтения, а мое приложение должно контролировать, когда/когда файлы будут удалены ,
Когда речь заходит о реализации моего заказа ContentProvider
, я не совсем понимаю некоторые моменты. Учебные пособия я смотрел только, казалось, касается обмена данными между двумя
- Достаточно просто переопределить и реализовать
openFile()
и внедрить методыquery()
,insert()
и т.д., как «ничего не делать» заглушки? - Предполагая, что реализация
openFile()
- это способ, как я могу подойти к созданиюParcelFileDescriptor
из массива байтов?
Примечание: Если это вообще возможно, мне необходимо полностью вернуться к уровню API 3 (кекс).
Другой возможностью может быть использование MemoryFile. Я сейчас работаю над этим решением, надеюсь, производительность быстрее, чем обычные файлы. – Georgie
Что касается моего комментария выше, я попытался использовать MemoryFile в реализации openFile() поставщика контента, но этого не удалось. Одна из причин заключается в том, что поддержка ParcelFileDescriptor, связанная с MemoryFile, исчезает в последних версиях Android. Еще до этого для доступа требовались рефлексивные трюки. – Georgie
Есть ли способ передать массив байтов в 'ParcelFileDescriptor'? По соображениям безопасности я не могу сохранить PDF-файл на телефоне. –