uniapp uni.downloadfile在鸿蒙手机上点击没反应怎么解决

在uniapp中使用uni.downloadfile下载文件时,鸿蒙系统的手机点击没反应,没有任何报错和下载提示。其他安卓和iOS设备都正常,只有鸿蒙手机出现这个问题。请问这是什么原因导致的?需要怎样解决?

2 回复

检查网络权限和存储权限是否开启。若已开启,尝试使用完整路径,或改用uni.uploadFile测试网络连接。

更多关于uniapp uni.downloadfile在鸿蒙手机上点击没反应怎么解决的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙系统上使用 uni.downloadFile 无响应,通常是由于系统兼容性或配置问题导致。以下是常见解决方案:

1. 检查网络权限

确保应用已获取网络访问权限:

  • manifest.json 中配置:
{
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          "<uses-permission android:name=\"android.permission.INTERNET\"/>"
        ]
      }
    }
  }
}

2. 添加鸿蒙网络权限

鸿蒙系统需单独声明网络权限:

  • manifest.json"app-plus" -> "distribute" -> "android" 节点下添加:
"permissions": [
  "<uses-permission ohos:name=\"ohos.permission.INTERNET\"/>"
]

3. 使用 HTTPS 地址

鸿蒙对非 HTTPS 链接限制严格,确保下载地址为 https:// 开头。

4. 检查文件存储权限

若下载到本地,需申请存储权限:

  • 动态申请权限(在下载前调用):
// 示例:检查并申请存储权限
uni.authorize({
  scope: 'scope.writePhotosAlbum', // 或根据实际存储路径调整
  success: () => {
    uni.downloadFile({
      url: 'https://example.com/file.pdf',
      success: (res) => {
        if (res.statusCode === 200) {
          console.log('下载成功:', res.tempFilePath);
        }
      }
    });
  },
  fail: () => {
    uni.showToast({ title: '权限不足', icon: 'none' });
  }
});

5. 兼容性写法

添加超时和错误处理:

uni.downloadFile({
  url: 'https://example.com/file.zip',
  timeout: 10000, // 设置超时时间
  success: (res) => {
    if (res.statusCode === 200) {
      // 处理下载文件
    }
  },
  fail: (err) => {
    console.error('下载失败:', err);
    uni.showToast({ title: '下载失败', icon: 'none' });
  }
});

6. 更新 UniApp 和 HBuilderX

确保使用最新版本的开发工具和框架,以兼容鸿蒙系统。

7. 真机调试

在鸿蒙真机上调试,通过 console.log 输出日志,定位具体错误原因。

按照以上步骤排查,通常可解决鸿蒙系统上的下载问题。如果问题持续,请提供更多错误日志或具体场景细节。

回到顶部