我一直在争论如何使用Downloadmanager并写入虚拟外部sd卡。
使用以下代码向用户显示目录选择器:
Intent intent = new Intent(Intent.ActionOpenDocumentTree);
CrossCurrentActivity.Current.Activity.StartActivityForResult(intent, 1);
选择“下载”后,结果为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即可执行此操作。阅读此线程Universal way to write to external SD card on Android后,我发现获取实际路径几乎没有用。在Orio模拟器中调用时,GetExternalFilesDirs()仅返回我的“内部sd卡”。
那么$ 100.000的问题;是否可以通过DocumentFile以任何方式使用Downloadmanager?
一个不好的选择是将临时文件下载到“内部SD卡”,然后将文件移动到“已安装SD卡”。
是否有Xamarin的替代下载器可以处理此问题?