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
相关产品推荐
相关产品推荐

