Я пишу приложение для Android, которое взаимодействует со службой RESTful. Эта веб-служба, по сути, предоставляет файловую систему и метаданные, а также CRUD доступ к файлам. Мое приложение получает метаданные и предоставляет их сторонним приложениям через ContentProvider
.
Мне нужно добавить возможность для приложений сторонних производителей, работающих на том же устройстве, что и мое приложение, в CRUD-файлы, делая запросы к/от моего приложения (не напрямую с сервером). Это означает, что они должны либо отправлять или получать содержимое файлов (которые, как правило, являются XML или изображениями) через мое приложение.
Я придумал два подхода для реализации этого:
Это кажется очевидным выбором для предоставления сторонним приложениям возможности чтения файлов из моего ContentProvider
. Я думаю, что это начинает становиться сложным, когда этим приложениям нужно создавать или обновлять файлы через мой `ContentProvider'. Мне понадобится обратный вызов, когда они закончатся, чтобы знать, когда отправлять новый/измененный файл обратно на сервер. Думаю, для этой цели я мог бы использовать FileObserver.
При таком подходе я могу посылать файлы между моим приложением и клиентскими приложениями через Messenger
. Файлы должны быть переданы через Bundle
, поэтому я не уверен, какой формат лучше всего подходит для их передачи (File
, FileDescriptor
, массив байтов, что-нибудь еще??). У меня нет хорошего понимания, будет ли это вызывать проблемы, если файлы станут большими.
Messenger
/Service
ContentProvider
to store the status of requestsContentObserver
I think using ContentProvider
was the ideal solution, but it seems that the API doesn't fully support my use case. Меня беспокоит, что попытка пойти по этому пути может привести к реализации kludgy. Если я использую подход Messenger
и Service
, я не уверен, что это самый надежный способ передачи файлов через Bundle
.
Гибридный подход кажется довольно надежным, но наиболее сложным для реализации. Файлы на самом деле не передаются, поэтому производительность должна быть хорошей. Тем не менее, боюсь, что это чрезмерная архитектура решения.
Какой подход лучше всего подходит для передачи файлов между приложениями, работающими на одном и том же Android-устройстве? Конечно, я открыт для других вариантов, которые не были описаны в моем вопросе.