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

如何通过Content URI从云向应用下载文件?及Intent实现云Zip文件下载

实现云存储Zip文件下载到应用的Intent方案

嘿,看你已经搞定了通过系统文件浏览器选择云存储文件的部分,接下来要把选中的Zip文件下载到自己应用里对吧?我给你梳理下具体的步骤和代码调整,直接能用的那种:

1. 处理Intent返回的文件Uri

首先,用户选择完文件后,你得在OnActivityResult方法里接住返回的文件Uri——这是系统给你的访问入口,不是本地路径哦。代码可以这么写:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);
    // 确认用户成功选择了文件
    if (resultCode == Result.Ok && data != null)
    {
        var cloudFileUri = data.Data;
        // 调用下载方法处理这个Uri
        DownloadZipToAppStorage(cloudFileUri);
    }
}

2. 把云存储文件写入应用私有目录

拿到Uri后,我们用ContentResolver来读取云存储里的文件内容,然后写入到应用的私有存储目录(这个目录只有你的应用能访问,安全又不需要额外权限)。这里要注意大文件的话别卡UI线程,我给你写了异步版本:

private async void DownloadZipToAppStorage(Android.Net.Uri fileUri)
{
    try
    {
        // 把耗时操作丢到后台线程,避免UI卡顿
        await Task.Run(() =>
        {
            using (var inputStream = ContentResolver.OpenInputStream(fileUri))
            {
                // 定义目标路径:应用私有files文件夹下的downloaded.zip
                var targetFilePath = Path.Combine(FilesDir.AbsolutePath, "downloaded.zip");
                // 写入文件
                using (var outputStream = new FileStream(targetFilePath, FileMode.Create))
                {
                    inputStream.CopyTo(outputStream);
                }
            }
        });
        // 回到UI线程提示用户
        RunOnUiThread(() => 
            Toast.MakeText(this, "Zip文件已成功下载到应用!", ToastLength.Short).Show());
    }
    catch (Exception ex)
    {
        RunOnUiThread(() => 
            Toast.MakeText(this, $"下载出错:{ex.Message}", ToastLength.Long).Show());
    }
}

3. 几个关键注意点

  • 权限问题:从Android 10开始,用ACTION_GET_CONTENT获取的Uri,通过ContentResolver访问不需要额外的存储权限,系统已经给了临时访问权限;如果要写到外部公共目录才需要WRITE_EXTERNAL_STORAGE,但非常不建议这么做,私有目录更安全。
  • 大文件处理:上面的代码用了Task.Run把下载逻辑放到后台,避免阻塞UI导致ANR(应用无响应),这是必须的哦。
  • Uri有效期:如果需要长期访问这个云文件,你可以调用ContentResolver.TakePersistableUriPermission来获取持久权限,不然重启应用后Uri就失效了。

内容的提问来源于stack exchange,提问作者Lamarti Rémi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:26:15