Альтернатива Downloadmanager для хранения файлов напрямую на внешнюю SD-карту - PullRequest
0 голосов
/ 27 сентября 2018

Я крутил голову о том, как я могу использовать Downloadmanager и писать на виртуальную внешнюю SD-карту.

Пользователю предоставляется селектор каталогов с использованием этого кода:

Intent intent = new Intent(Intent.ActionOpenDocumentTree);
CrossCurrentActivity.Current.Activity.StartActivityForResult(intent, 1);

Dirselector

Результатом является Uri после выбора «Загрузить», как показано здесь:

content: //com.android.externalstorage.documents / tree / 11FA-361A% 3ADownload / document / 11FA-361A% 3Download

Этот "путь" мало используется для Downloadmanager.Request.SetDestinationUri: https://developer.android.com/reference/android/app/DownloadManager.Request.html#setDestinationUri(android.net.Uri)в нем говорится:

"Должен быть файловый URI для пути к внешнему хранилищу, а вызывающее приложение должно иметь разрешение WRITE_EXTERNAL_STORAGE."

Фактический путь кSD-карта в системе:

generic_x86: / $ su
generic_x86: / # cd mnt / media_rw / 11FA-361A /
generic_x86: / mnt / media_rw / 11FA-361A# ls
LOST.DIR Скачать

Этот путь недоступен для обычных приложений / пользователей, мое приложение должноне нужен root для этого.Читая эту ветку Универсальный способ записи на внешнюю SD-карту на Android Я понял, что получить реальный путь довольно бесполезно.GetExternalFilesDirs () возвращает только мою «внутреннюю SD-карту» при вызове в эмуляторе Orio.

Итак, вопрос за 100 000 долларов;Можно ли каким-либо образом использовать Downloadmanager, используя DocumentFile?
Плохой альтернативой является временная загрузка на «внутреннюю SD-карту», ​​а затем перемещение файла на «смонтированную SD-карту».

Существуют ли альтернативные загрузчики для Xamarin, которые могли бы справиться с этим из коробки?

...