Я крутил голову о том, как я могу использовать Downloadmanager и писать на виртуальную внешнюю SD-карту.
Пользователю предоставляется селектор каталогов с использованием этого кода:
Intent intent = new Intent(Intent.ActionOpenDocumentTree);
CrossCurrentActivity.Current.Activity.StartActivityForResult(intent, 1);
![Dirselector](https://i.stack.imgur.com/fYChp.png)
Результатом является 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, которые могли бы справиться с этим из коробки?