【问题标题】:PDF File Download Issue of Access denied in xamarin Forms Android在 xamarin Forms Android 中访问被拒绝的 PDF 文件下载问题
【发布时间】:2021-05-10 15:07:04
【问题描述】:

我在 Android Manifest 文件中拥有这些权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

也在运行时请求权限。

这是我的pdf下载代码

var documentsPath = (string)Android.OS.Environment.GetExternalStoragePublicDirectory("SHAZ");
string localPath = Path.Combine(documentsPath, filename);
File.WriteAllBytes(localPath, bytes);

这是我从安卓应用中得到的。

** {System.UnauthorizedAccessException:对路径“/storage/emulated/0/SHAZ/ABC.pdf”的访问被拒绝。 在 System.IO.FileStream..ctor(System.String 路径、System.IO.FileMode 模式、System.IO.FileAccess 访问、System.IO.FileShare 共享、System.Int32 bufferSize、System.Boolean 匿名、System.IO。 FileOptions 选项)[0x001aa] 在 /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.IO/FileStream.cs:239 在 System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share) [0x00000] in /Users/builder/jenkins/workspace/archive -mono/2020-02/android/release/mcs/class/corlib/System.IO/FileStream.cs:91 在 (wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare) 在 System.IO.File.InternalWriteAllBytes (System.String path, System.Byte[] bytes) [0x00000] 在 /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/ src/System.IO.FileSystem/src/System/IO/File.cs:429 在 System.IO.File.WriteAllBytes (System.String path, System.Byte[] bytes) [0x00039] 在 /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/ src/System.IO.FileSystem/src/System/IO/File.cs:420 在 SaveFile.cs:25 中的 SHAZ_HR_Payroll.Droid.Models.SaveFile.SaveFiles(System.String 文件名,System.Byte[] 字节)[0x00034] 在 SHAZ_HR_Payroll.Pages.Employee.EmployeeChangePasswrod.BtnDownload_Clicked(System.Object 发件人,System.EventArgs e)[0x000d7] 在 \XYZ.xaml.cs:84 } **

IDE:VS-2019 安卓版本:10 Xamarin 表单版本:5.0.0.1874

【问题讨论】:

  • 这与下载无关。我觉得没什么。这与尝试在存储中创建文件有关。
  • 是的,你是对的。保存文件系统时出现访问被拒绝的错误,尽管我给予了完全许可。
  • 不,您请求了许可。但是您使用的是 Android 10 设备。

标签: android xamarin xamarin.forms xamarin.android


【解决方案1】:

如果针对 API 29+,即使您请求权限并且用户授予权限,您也会收到错误消息,因为他们更改了存储的工作方式。

但是,如果您像我一样,厌倦了 Android 每天让事情变得更加复杂,只需将 android:requestLegacyExternalStorage="true" 添加到您的清单 &lt;application&gt; 标记中,您就会被保存,直到您开始以 API 30 为目标。

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 2018-11-07
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 2014-11-26
    • 2022-01-27
    相关资源
    最近更新 更多