首页 > 解决方案 > 在 xamarin Android 中将目标设置为 Android 10 API 级别 29 时无法下载文件

问题描述

在此处输入图像描述使用 xamarin 表单并将目标 Android 版本更改为 Android 10.0 API 级别 29。我正在从服务器下载 pdf ZIP 文件并保存在外部存储中。所以这在 Android 9 之前可以正常工作。但在 Android 10 设备中无法下载内容。我在 manifest.xml 中添加了 android:requestLegacyExternalStorage="true" 。现在我可以在外部存储中创建带有包名的目录。所以我把这条路径给了下载管理器。当下载管理器开始下载它时显示 java.lang.securityException。并且消息是不受支持的路径。

string extension = FetchFileExtension(downloadPath.ContentUrl.ContentType);
                        string path = Path.Combine(DependencyService.Get<Interfaces.IPath>().InternalStoragePath(), productId + extension);
                        IDownloadManager downloadManager = CrossDownloadManager.Current;
                        downloadManager.PathNameForDownloadedFile = new Func<IDownloadFile, string>(file =>
                        {
                            return path;
                        });
                        FetchLaunchData(productId);
                        IDownloadFile downloadFile = downloadManager.CreateDownloadFile(downloadPath.ContentUrl.Offline);
                        _activeDownloads[productId] = downloadFile;
                        downloadFile.PropertyChanged += PropertyChangedEventHandler;
                        downStartTime = DateTimeOffset.Now.ToUnixTimeMilliseconds();
                        downloadManager.Start(downloadFile);
    public string StoragePath()
    {
        
        return Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/." + Assets.AppConst.ApplicationId + "/";
    }

标签: androidxamarin.formsxamarin.androidstorageandroid-10.0

解决方案


推荐阅读