Maui Community Toolkit MediaElement崩溃问题求助
使用MAUI Community Toolkit MediaElement遇到的问题
我在使用MAUI Community Toolkit的MediaElement时遇到异常,为排查问题,创建了全新的MAUI App模板,按官方文档仅添加如下代码:
<toolkit:MediaElement HeightRequest="400" WidthRequest="400" Source="https://commondatastorage.googleapis.com/gtv-videosbucket/sample/BigBuckBunny.mp4" ShouldShowPlaybackControls="True" />
控制台持续报错:
MediaManager: Error: AndroidX.LocalBroadcastManager.Content.LocalBroadcastManager not supported on Android 13 and above.
实际项目中问题更严重:集成Toolkit的IPopupService后,MediaElement会导致应用崩溃,日志显示:
Information: 0 : MediaControlsService destroyed. The program 'xxxxx.MAUI.dll' has exited with code 0 (0x0).
问题原因
- Android 13+兼容性问题:Android 13(API 33)起官方废弃了
LocalBroadcastManager,但MediaElement底层依赖的MediaManager库仍在使用该组件,触发兼容性报错。 - 生命周期冲突:MediaElement的后台播放服务(MediaControlsService)与IPopupService的Popup组件生命周期管理冲突,服务销毁时未正确释放资源,导致应用崩溃。
解决方法
1. 升级MAUI Community Toolkit到最新版本
社区工具包团队已修复Android 13+的兼容性问题,优先更新NuGet包:
- 在项目NuGet包管理器中,将
CommunityToolkit.Maui升级至最新稳定版 - 同步项目后重新运行,
LocalBroadcastManager的报错通常会消失
2. 禁用MediaElement后台控制服务
若升级后Popup崩溃问题仍存在,可通过禁用后台播放控制规避冲突:
在XAML中添加ShouldEnableMediaControls="False"属性:
<toolkit:MediaElement HeightRequest="400" WidthRequest="400" Source="https://commondatastorage.googleapis.com/gtv-videosbucket/sample/BigBuckBunny.mp4" ShouldShowPlaybackControls="True" ShouldEnableMediaControls="False" />
该配置会关闭后台的MediaControlsService,避免与Popup生命周期产生冲突。
3. 自定义Android平台实现(进阶)
如果以上方法无效,可自定义Android平台的MediaElement逻辑,替换废弃的LocalBroadcastManager为ContextCompat.registerReceiver等现代API,此方案需要具备MAUI平台自定义开发经验。
内容的提问来源于stack exchange,提问作者Kasper Sommer




