You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Xamarin Forms中识别Downloads下载文件夹?是否需特定权限

Xamarin Forms 获取Downloads下载文件夹路径解决方案

路径获取实现逻辑

Xamarin Forms 官方没有提供直接获取 Downloads 文件夹路径的跨平台API,Environment.GetFolderPath() 对应的 SpecialFolder 枚举未包含公共下载目录项,FileSystemHelper 也未封装该路径,需要通过依赖服务分别对接各平台原生API实现:

  • 安卓端公共下载目录:调用原生API Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath 即可获取路径
  • iOS端无系统级公共下载共享目录,仅可获取应用自身沙箱内的Downloads文件夹,调用原生API NSSearchPath.GetDirectories(NSSearchPathDirectory.DownloadsDirectory, NSSearchPathDomain.User, true)[0] 即可获取路径

权限要求

  • 安卓端
    • 仅操作当前应用自身写入公共Downloads目录的文件:安卓6.0-9需要申请WRITE_EXTERNAL_STORAGE权限,安卓10及以上无需申请任何权限
    • 需要读取其他应用写入公共Downloads目录的文件:安卓12及以下申请READ_EXTERNAL_STORAGE权限,安卓13及以上申请对应类型的READ_MEDIA_*权限,非媒体类文件需通过系统文件选择器授权访问,无法直接通过路径读取
  • iOS端
    • 访问应用自身沙箱内的Downloads文件夹:无需申请额外权限
    • 访问其他应用的下载文件:无法直接获取路径,需拉起系统文件选择器授权访问,无需提前申请静态权限

完整依赖服务实现示例

  1. 共享项目中定义服务接口
public interface IDownloadPathService
{
    string GetDownloadsFolderPath();
}
  1. 安卓端平台实现
[assembly: Dependency(typeof(DownloadPathServiceAndroid))]
namespace YourAppNamespace.Droid
{
    public class DownloadPathServiceAndroid : IDownloadPathService
    {
        public string GetDownloadsFolderPath()
        {
            return Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath;
        }
    }
}
  1. iOS端平台实现
[assembly: Dependency(typeof(DownloadPathServiceiOS))]
namespace YourAppNamespace.iOS
{
    public class DownloadPathServiceiOS : IDownloadPathService
    {
        public string GetDownloadsFolderPath()
        {
            return NSSearchPath.GetDirectories(NSSearchPathDirectory.DownloadsDirectory, NSSearchPathDomain.User, true).FirstOrDefault();
        }
    }
}
  1. 共享项目调用方式
var downloadsPath = DependencyService.Get<IDownloadPathService>().GetDownloadsFolderPath();

内容的提问来源于stack exchange,提问作者Michael Wagner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:54:01