Когда приложение хочет получить доступ к файлу, предоставляемому другим приложением, запрашивающее приложение (клиент), как правило, отправляет запрос в приложение, предоставляющее файл (сервер). В большинстве случаев, запрос запускает Activity в серверном приложении, которая отображает файлы, которыми оно может поделиться. Пользователь выбирает файл, после чего сервер приложений возвращает URI контента для файла клиентскому приложению.

Этот урок покажет вам, как клиентское приложение запрашивает файл у серверного приложения, получает URI контента файла от серверного приложения, и открывает файл, используя URI контента.

Отправить запрос на получение файла


Чтобы запросить файл у серверного приложений, клиентское приложение вызываетstartActivityForResult с Intent , содержащим действие, такое как ACTION_PICK и MIME типом, которые клиентское приложение может обработать.

Например, следующий фрагмент кода показывает, как послать Intent в серверное приложение, чтобы запустить Activity описанную в уроке Совместное использование файлов:

 

Получить доступ к требуемому файлу


Серверное приложение посылает URI контента файла обратно в клиентское приложение в Intent. Это Intent передается клиентскому приложению в перегруженный метод onActivityResult(). Как только клиентское приложение имеет URI контента файла, оно может получить доступ к файлу, получив его FileDescriptor.

Безопасность файла сохраняется в этом процессе, так как URI контента является единственным фрагментом данных, который получает клиентское приложение. Так как этот URI не содержит путь к каталогу, клиентское приложение не может искать и открывать какие-либо другие файлы серверного приложения. Только клиентское приложение получает доступ к файлу, и только используя разрешений, предоставленное серверным приложением. Разрешения временные, поэтому, как только стек задачи клиентского приложения завершится, файл не будет больше доступен за пределами серверного приложения.

Следующий фрагмент демонстрирует, как клиентское приложение обрабатывает Intentотправленный с серверного приложения, и как клиентское приложение получает FileDescriptorиспользуя URI контента:

 

 

Метод openFileDescriptor() возвращает ParcelFileDescriptor для файла. Из этого объекта, клиентское приложение получает FileDescriptor объект, который она может использовать, чтобы прочитать файл.

Если не указано иное, этот контент распространяется под лицензией Creative Commons Attribution 2.5. Для получения дополнительной информации и ограничений, см. Лицензия контента.

Запрос файла в android приложении обновлено: Февраль 27, 2016 автором: admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*
Website