相关疑难解决方法(0)

Xamarin.Forms - 如何为 Android 定义范围存储以及如何实现它以下载下载目录中的文件?

在我的应用程序中,我提供了下载 PDF 格式报告的功能。一切都很好,直到我在 Android 10 及更低版本上测试我的应用程序。最近我将设备更新到 Android 11,现在我无法下载共享存储中的任何文件。我在下载文件时遇到Access Denied错误。

我已授予读取和写入外部存储的权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

我的下载路径是

Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath;
Run Code Online (Sandbox Code Playgroud)

我也设置android:requestLegacyExternalStorage="true"AndroidManifest.xml

我下载文件的代码如下所示

public async void DownloadSupplierSample(object sender, EventArgs e)
    {
        try
        {
            string basepath;
            if (Device.RuntimePlatform == Device.Android)
                basepath = DependencyService.Get<IDownloadPath>().GetDownloadsPath();
            else
                basepath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "..", "Library");

            PermissionStatus readstatus = await Permissions.CheckStatusAsync<Permissions.StorageRead>();
            PermissionStatus writestatus = await Permissions.CheckStatusAsync<Permissions.StorageWrite>();

            if (readstatus == PermissionStatus.Granted && writestatus == PermissionStatus.Granted)
            {
                DownloadSupplier(basepath);
            }
            else
            {
                var read = await Permissions.RequestAsync<Permissions.StorageRead>();
                var write …
Run Code Online (Sandbox Code Playgroud)

android xamarin.android xamarin.forms

7
推荐指数
1
解决办法
4773
查看次数

标签 统计

android ×1

xamarin.android ×1

xamarin.forms ×1