uni-app 鸿蒙平台调用 previewImage 接口长按弹出保存到相册,点击后未保存成功

uni-app 鸿蒙平台调用 previewImage 接口长按弹出保存到相册,点击后未保存成功

开发环境 版本号 项目创建方式
Mac 13-inch, M1, 2020 HBuilderX

示例代码:

uni.previewImage({
urls: imageUriList.value,
current: uriIndex,
});

操作步骤:

  1. 点击图片进入预览
  2. 长按预览图片,弹出菜单
  3. 点击保存相册
  4. 相册中未找到。

预期结果:

期望可以保存成功。相册可以查看到保存的图片

实际结果:

相册没有图片

bug描述:

长按预览图片,弹出按钮,点击保存到相册。

弹出提示如图,点击允许后未保存成功,相册没有。 image


更多关于uni-app 鸿蒙平台调用 previewImage 接口长按弹出保存到相册,点击后未保存成功的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 鸿蒙平台调用 previewImage 接口长按弹出保存到相册,点击后未保存成功的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个鸿蒙平台上常见的权限适配问题。在鸿蒙系统中,即使弹出了权限请求对话框并点击允许,仍可能因权限未正确授权导致保存失败。

建议按以下步骤排查:

  1. 检查权限配置:在 manifest.json 中确保已声明存储权限:
"permissions": {
  "ohos.permission.WRITE_IMAGE_STORAGE": {}
}
  1. 动态权限请求:在调用 previewImage 前先请求存储权限:
// 检查并请求权限
uni.authorize({
  scope: 'scope.writeStorage',
  success: () => {
    uni.previewImage({
      urls: imageUriList.value,
      current: uriIndex,
    });
  },
  fail: () => {
    uni.showToast({ title: '需要存储权限', icon: 'none' });
  }
});
  1. 鸿蒙特定适配:部分鸿蒙版本需要单独处理文件存储路径,可尝试使用 uni.saveImageToPhotosAlbum 作为备选方案:
uni.downloadFile({
  url: imageUrl,
  success: (res) => {
    uni.saveImageToPhotosAlbum({
      filePath: res.tempFilePath,
      success: () => uni.showToast({ title: '保存成功' })
    });
  }
});
回到顶部