当前位置: 首页 > 知识库问答 >
问题:

试图从url下载文件时在Xamarin中进行未经授权的访问

伍弘盛
2023-03-14

目前我对Xamarin.forms/Android非常着迷,我需要从我手机的“download”目录中的特定URL下载一个csv文件,但是我不断地获得System.UnauthorizedAccessException:对路径“/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;
        }
    }`
  • Internet
  • write_external_storage
  • access_coarse_location
  • access_fine_location
  • read_external_storage

我不明白为什么它不起作用。顺便说一下,我正在测试一个物理设备(Pixel3),也许我应该在我的手机里设置一些配置...我不知道这里出了什么问题

共有1个答案

和斌
2023-03-14

您的代码不能在API级别23或更高的级别上工作。

您必须在运行时请求许可。下面是关于这一点的帖子:https://devblogs.microsoft.com/xamarin/requestion-runtime-permissions-in-android-marshmallow/

 类似资料:
  • 我正在使用Chris Kacerguis的Codeigniter中的restserver,并设置rest_auth会话。当我登录时,我访问view.php通过file_get_contents得到响应的页面,它返回401未经授权。当我在新选项卡中访问API的直接页面时,它会正确返回json。 景色。php以以下方式加载API内容: 答复如下: 遇到一个PHP错误 严重性:警告 消息:file_ge

  • 只要我的antMatcher上有.permitall(),这就可以很好地工作,但是当我试图保护它以便只有管理员才能进行该调用时(DB中的管理员角色是ROLE_ADMIN),它会返回401未经授权的访问,并且没有消息。我试过了 .hasRole(“admin”) .hasRole(“role_admin”) .hasAuthority(“admin”) .hasAuthority(“role_adm

  • 问题内容: 我从Nexus存储库中检出了代码。我更改了帐户密码,并在文件中正确设置了密码。在执行时,我收到错误消息,说明它尝试从该存储库下载文件。 任何想法如何解决此错误?我在Maven 3.04中使用Windows 7 问题答案: 这里的问题是所使用的密码出现错字错误,由于密码中使用了字符/字母,因此很难识别。

  • 我是公共GitHub回购协议的维护者。我已经设置了GitHub操作来构建发布到GitHub包。您可以在此处看到已创建的包: https://github.com/paulschwarz/spring-dotenv/packages/135114 我注意到的第一件事是GitHub只提供了一个Maven安装片段。我使用这段代码将依赖项添加到另一个项目中,它似乎可以工作。 现在我想把这个包导入一个Gra

  • 我想通过Azure API管理公开一些API(逻辑应用程序、函数)。它们工作得很好,所以我决定添加OAuth2自动化。 我一步一步地跟着https://docs.microsoft.com/fr-fr/azure/api-management/api-management-howto-protect-backend-with-aad: 在Azure AD中注册应用程序(后端应用程序)以表示API