1

Im, позволяющий пользователям выбирать и отправлять xml-файл в мое приложение с помощью кнопки Share в других приложениях, таких как Dropbox, Google диск или локальный хранилище файлов. (См http://developer.android.com/training/sharing/receive.html)Использование Downloadmanager для загрузки файла, полученного из приложений

Я могу успешно извлечь URI выбранного/совместно используемый файл, например, из Dropbox по:

Uri receivedUri = Uri.parse (intent.getStringExtra (Intent.EXTRA_TEXT));

Но как загрузить этот файл на локальное filestore с помощью Downloadmanager? Я автоматически аутентифицирован в своей учетной записи, например, на Dropbox или Google Диске (так как я выбрал и выбрал, чтобы поделиться файлом с их мобильными приложениями)? Должен ли я настраивать Downloadmanager по-разному в зависимости от того, с какого источника Im загружается файл?

Спасибо!

ответ

0

DownloadManager не требуется. Ваше приложение может прочитать файл, открыв файловый дескриптор на основе URI, если это URI файла или URI содержимого. См. ContentResolver.openFileDescriptor(), который возвращает ParcelFileDescriptor, который, в свою очередь, содержит FileDescriptor.

BTW, android.support.v4.content.FileProvider.getUriForFile() вернет контент URI для файла под вашим контролем приложения. В отличие от URI файла, вы можете установить разрешения на временный доступ в URI контента. Это намного безопаснее.

+0

Спасибо! Я знаю, что Downloadmanager не нужен, но я думал использовать его, потому что он обрабатывает большую часть сложности для меня. Тем не менее, мой вопрос касается того, какие механизмы загрузки следует использовать для загрузки файлов, независимо от того, где находится файл? Я предполагаю, что ContentResolver и FileProvider ожидают, что я настрою и обработаю авторизацию вручную для каждого из возможных источников (например, Dropbox, Google Диск, ++), и я хотел бы избежать этого. Я не контролирую, какие приложения могут иметь пользователи, и хочу поддерживать их все. –