xamarin - 尝试从 url 下载文件时 Xamarin 中的未经授权访问
问题描述
我现在非常坚持使用 Xamarin.Forms/Android,我需要从手机的“下载”目录中的特定 URL 下载 csv 文件,但是我不断收到System.UnauthorizedAccessException: Access to the path "/storage /emulated/0/Download/myFile.csv”被拒绝。
public async Task DownloadAsync(string url)
{
try
{
using(var webClient = new WebClient())
{
var directoryPath = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath;
string pathToNewFile = Path.Combine(directoryPath, myFile.csv);
await webClient.DownloadFileTaskAsync(new Uri(url), pathToNewFile);
}
}
catch(Exception ex)
{
throw;
}
}`
这些是我的权限设置:
- 互联网
- WRITE_EXTERNAL_STORAGE
- ACCESS_COARSE_LOCATION
- ACCESS_FINE_LOCATION
- READ_EXTERNAL_STORAGE
我不明白为什么它不起作用。顺便说一句,我正在物理设备(Pixel3)上进行测试,也许我应该在手机内设置一些配置......不知道这里出了什么问题
解决方案
您的代码不适用于 API 级别 23 或更高级别。
您必须在运行时请求许可。这是关于此的帖子:https ://devblogs.microsoft.com/xamarin/requesting-runtime-permissions-in-android-marshmallow/
推荐阅读
- amazon-s3 - aws s3同步cli在存储桶之间同步时忽略分段上传配置
- architecture - 15 万用户同时使用的电报机器人架构
- html - 我该如何修复这个 xml 和 xsl 代码,因为它不起作用
- python - 如果行值等于 x,则前向填充列 - Pandas
- python - 如何设置服务器来运行我的 python 代码并向用户返回一个值?
- react-native - 在另一个文件上调用函数 JS React Native
- c++ - 无法在 CLion (macOS) 上使用 CImg 打开 .png 文件
- reactjs - Redux-form 文件类型错误:缺少类型“道具”中的以下属性:字段,元
- java - 我的比较运算符没有遵循它们背后的逻辑是否有原因
- python-3.7 - 如何在 python 中使用 split() 确定行,以及我的歌曲中有多少单词