.NET MAUI Android中使用Mega API下载文件无响应问题
问题排查与修复:.NET MAUI Android 下 Mega API 无下载效果
核心问题分析
你的代码存在几个关键问题导致下载无效果:
- 异步方法未等待:
DownloadFileAsync是异步方法,但你直接调用未加await,导致下载还没执行完就执行了Logout,客户端提前断开,下载被终止。 - 构造函数内执行异步操作:
ContentPage的构造函数不适合执行长时间异步任务,容易阻塞UI初始化或导致操作被系统中断,应放到页面生命周期方法中执行。 - 硬编码路径的权限问题:直接写
/storage/emulated/0/Downloads可能触发Android存储权限限制,且不同设备的路径可能存在差异。 - 无异常捕获:没有对异步操作添加异常处理,无法排查潜在的错误信息。
修复后的代码
namespace Junior_Jobs; using CG.Web.MegaApiClient; using Microsoft.Maui.Storage; using System; using System.Threading.Tasks; public partial class Tryimportimage : ContentPage { public Tryimportimage() { InitializeComponent(); } protected override async void OnAppearing() { base.OnAppearing(); await DownloadMegaFileAsync(); } private async Task DownloadMegaFileAsync() { MegaApiClient client = null; try { client = new MegaApiClient(); await client.LoginAnonymousAsync(); Uri fileLink = new Uri("https://mega.nz/file/W0UAgJaK#XOYyTETrIy8daz3_dw3fdh6Hh8EFEdrnbyoop1r9R6g"); INode node = await client.GetNodeFromLinkAsync(fileLink); System.Diagnostics.Debug.WriteLine($"Downloading {node.Name}"); // 使用MAUI标准化路径,避免权限和路径兼容问题 var downloadPath = Path.Combine(FileSystem.Current.GetFolderPath(SpecialFolder.Downloads), node.Name); await client.DownloadFileAsync(fileLink, downloadPath); System.Diagnostics.Debug.WriteLine($"Download completed: {downloadPath}"); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine($"Download error: {ex.Message}"); // 可在此添加UI提示,比如弹窗告知用户下载失败 } finally { client?.Logout(); } } }
额外配置步骤
- 权限申请:在Android项目的
AndroidManifest.xml中添加存储权限:
对于Android 13+,需要用MAUI的<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" android:minSdkVersion="33" />Permissions类动态申请Permissions.Media.ReadImages权限。 - 异步规范:所有异步操作必须用
await等待完成,避免“调用即丢弃”的写法,确保操作完整执行。 - 生命周期使用:页面的异步任务优先放在
OnAppearing中执行,构造函数仅做UI初始化工作。
内容的提问来源于stack exchange,提问作者8TILMATE
相关产品推荐
相关产品推荐

