uniapp app鸿蒙系统不支持保存到相册怎么办?

在uniapp开发的app中,鸿蒙系统无法将图片或文件保存到相册,该如何解决?尝试了官方API和常见插件都无效,是否有兼容鸿蒙的解决方案?

2 回复

鸿蒙系统暂不支持uni.saveImageToPhotosAlbum接口。可改用uni.downloadFile保存到本地,或引导用户手动截图保存。

更多关于uniapp app鸿蒙系统不支持保存到相册怎么办?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙系统中,UniApp 的 uni.saveImageToPhotosAlbum 方法可能因系统权限或兼容性问题导致无法保存图片到相册。以下是解决方案:

  1. 检查权限:确保应用已获取相册写入权限(WRITE_EXTERNAL_STORAGE 或鸿蒙等效权限)。在代码中动态请求权限:

    uni.authorize({
      scope: 'scope.writePhotosAlbum',
      success() {
        uni.saveImageToPhotosAlbum({
          filePath: '/temp/test.jpg',
          success: () => uni.showToast({ title: '保存成功' }),
          fail: (err) => uni.showToast({ title: '保存失败', icon: 'none' })
        });
      },
      fail: () => uni.showModal({ content: '需授权相册权限', showCancel: false })
    });
    
  2. 处理兼容性:鸿蒙系统可能对文件路径格式有特定要求。确保 filePath 使用临时路径(如通过 uni.chooseImage 获取)或绝对路径。

  3. 降级方案:若保存失败,可引导用户手动保存:

    • 使用 uni.previewImage 预览图片,提示用户长按保存。
    • 或通过 uni.downloadFile 下载图片后,提示用户到下载目录手动移动至相册。
  4. 更新 UniApp SDK:确保使用最新版本的 UniApp 框架,以兼容鸿蒙系统更新。

示例完整代码:

// 选择图片并保存
uni.chooseImage({
  count: 1,
  success: (res) => {
    const tempPath = res.tempFilePaths[0];
    uni.saveImageToPhotosAlbum({
      filePath: tempPath,
      success: () => uni.showToast({ title: '保存成功' }),
      fail: (err) => {
        console.error(err);
        uni.showModal({
          content: '保存失败,请检查权限或尝试手动保存',
          showCancel: false
        });
      }
    });
  }
});

若问题持续,请检查鸿蒙系统版本及 UniApp 社区是否有已知兼容性解决方案。

回到顶部