.NET 7.0 MAUI应用中Plugin.Maui.Audio无法播放本地文件
问题解决:.NET MAUI中Plugin.Maui.Audio播放本地下载MP3报错文件未找到
问题根源
你误用了FileSystem.OpenAppPackageFileAsync方法——这个方法专门用于读取打包时嵌入应用安装包内的资源文件,而你要播放的是下载到应用私有数据目录的文件,所以即便路径正确,这个方法也无法定位到文件。
正确实现代码
不要用OpenAppPackageFileAsync,直接通过文件流打开目标MP3文件即可,同时推荐用FileSystem.AppDataDirectory拼接路径,避免硬编码绝对路径导致的兼容性问题:
// 拼接正确的文件路径(替代硬编码的绝对路径) var filePath = Path.Combine(FileSystem.AppDataDirectory, "1.mp3"); if (File.Exists(filePath)) { // 直接打开本地文件流 using var stream = File.OpenRead(filePath); var player = AudioManager.Current.CreatePlayer(stream); player.Play(); }
如果需要异步操作,也可以用:
var filePath = Path.Combine(FileSystem.AppDataDirectory, "1.mp3"); if (File.Exists(filePath)) { using var stream = await File.OpenAsync(filePath, FileMode.Open); var player = AudioManager.Current.CreatePlayer(stream); player.Play(); }
补充说明
- 硬编码
/data/user/0/com.companyname.myapp/files/这类绝对路径风险高,一旦应用包名变更或系统目录结构调整,代码就会失效,用FileSystem.AppDataDirectory能自动获取当前应用的私有数据目录,适配不同设备。 - 你已经通过
File.Exists确认文件存在,只要切换到正确的文件流打开方式,就能正常播放MP3。
内容的提问来源于stack exchange,提问作者Tony Hughes
相关产品推荐
相关产品推荐

