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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:10:36