使用Xam.Plugin.Media时Maui提示无法检测当前Activity,求解决
解决Xam.Plugin.Media拍照时“当前Activity无法被检测到”的错误
你遇到的错误是因为未正确初始化Xam.Plugin.Media插件,必须在对应平台的入口类中执行初始化操作,具体步骤如下:
Android 端配置
在你的MainActivity的OnCreate方法中添加初始化代码:
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // 初始化Media插件 CrossMedia.Current.Init(this); // 其他初始化代码... }
iOS 端配置
在AppDelegate的FinishedLaunching方法中添加初始化代码:
public override bool FinishedLaunching(UIApplication app, NSDictionary options) { // 初始化Media插件 CrossMedia.Current.Init(); // 其他初始化代码... return true; }
同时需要在Info.plist中添加权限描述(iOS要求必须声明权限用途):
<key>NSCameraUsageDescription</key> <string>需要访问相机拍摄照片</string> <key>NSPhotoLibraryAddUsageDescription</key> <string>需要访问相册保存照片</string> <key>NSPhotoLibraryUsageDescription</key> <string>需要访问相册选择照片</string>
额外注意事项
- 确保调用
TakePhotoAsync的代码处于Activity上下文环境中,避免在后台线程或无UI上下文的类中直接调用; - 确认NuGet包已更新到最新稳定版,避免旧版本的兼容性问题。
你的调用代码:
await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions { SaveToAlbum = true, PhotoSize = PhotoSize.MaxWidthHeight, Name = fullFileName, DefaultCamera = CameraDevice.Rear, MaxWidthHeight = 1000, AllowCropping = false });
内容的提问来源于stack exchange,提问作者Arup
相关产品推荐
相关产品推荐

