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

Xamarin Android使用FilePicker打开文件报错:当前上下文无FilePicker

解决FilePicker不存在于当前上下文的问题

1. 确认Xamarin.Essentials包已正确安装

  • 右键解决方案 -> 管理NuGet程序包,搜索Xamarin.Essentials,确保所有项目(共享项目、iOS、Android)都安装了相同版本的包。
  • 若已安装仍有问题,尝试卸载后重新安装,避免包文件损坏。

2. 检查命名空间引用

虽然你已添加using Xamarin.Essentials;,但仍需确认:

  • 该引用语句在文件顶部,未被错误代码块包裹。
  • 若问题依旧,可尝试使用完全限定名调用:
    var result = await Xamarin.Essentials.FilePicker.PickAsync(options);
    

3. 配置平台必要权限与初始化

Android端

  • 在AndroidManifest.xml中添加存储权限:
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
  • 针对Android 10及以上版本,需在<application>标签内添加:
    android:requestLegacyExternalStorage="true"
    
  • 在MainActivity.cs的OnCreate方法中初始化Xamarin.Essentials:
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        // 其他业务代码
    }
    

iOS端

  • 在Info.plist中添加相册访问权限描述:
    <key>NSPhotoLibraryUsageDescription</key>
    <string>需要访问相册以选择图片</string>
    
  • 在AppDelegate.cs的FinishedLaunching方法中初始化:
    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        Xamarin.Essentials.Platform.Init(app, options);
        // 其他业务代码
        return base.FinishedLaunching(app, options);
    }
    

4. 清理重建解决方案

  • 点击菜单「生成」->「清理解决方案」
  • 重新生成整个解决方案,清除编译缓存导致的异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:20:06