android - 在 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 + "/";
}
解决方案
推荐阅读
- python - 如何使用 Jinja2 循环遍历相关表?
- point-cloud-library - 如何使用 PCLVisualizer 约束相机并防止滚动行为
- javascript - 如何获取 PersonaID 以对 EWS 上的 GetPersona 操作进行有效调用
- angular - 订阅来自不同组件的服务响应
- android - 基类中的匕首注入是一种好方法吗?
- python - 当前面有数字时递归匹配每个非数字字符
- haskell - 检查二叉树是否为二叉搜索树的函数
- java - 开始日期和结束日期验证 - 实体休眠 java
- python - 在 Linux 上使用 pyodbc 的连接池问题
- python - 如何导入 pywt 库,它是 dev c ++ 中的 python 库?