HarmonyOS鸿蒙Next中安全控件的保存控件SaveButton保存图片到相册失败

HarmonyOS鸿蒙Next中安全控件的保存控件SaveButton保存图片到相册失败 安全控件的保存控件SaveButton保存图片到相册失败 之前想要申请ohos.permission.READ_IMAGEVIDEO、ohos.permission.WRITE_IMAGEVIDEO
权限被拒绝。转而使用保存在线图片到相册功能使用SaveButton功能,结果提示错误码"13900012"

3 回复

需先下载到沙箱,再保存视频/图片到图库相册;如下是图片保存到图库的demo,可以参考使用,保存视频需在调用createAsset方法时需将参数修改为视频类型,创建好视频资源后,将沙箱中下载好的视频资源通过文件写入的方式,写到创建好的视频资源里。

SaveButton(this.saveButtonOptions)// 创建安全控件按钮
  .onClick(async (event, result: SaveButtonOnClickResult) => {
    if (result == SaveButtonOnClickResult.SUCCESS) {
      if (this.finalPixelMap) {
        try {
          // 1、使用安全控件创建文件
          let phAccessHelper: photoAccessHelper.PhotoAccessHelper = photoAccessHelper.getPhotoAccessHelper(this.context);
          let options: photoAccessHelper.CreateOptions = {
            title: Date.now().toString()
          };
          // createAsset的调用需要ohos.permission.READ_IMAGEVIDEO和ohos.permission.WRITE_IMAGEVIDEO的权限
          let photoUri: string = await phAccessHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png', options);
          console.info('CameraDemo createAsset successfully, photoUri: ' + photoUri);
          // 2.1、方式一:通过文件管理写入文件
          let file: fileIo.File = fileIo.openSync(photoUri, fileIo.OpenMode.WRITE_ONLY);
          fileIo.writeSync(file.fd, this.buffer);
          fileIo.closeSync(file);
          promptAction.showToast({message: `保存成功`})
        } catch (error) {
          let err = error as BusinessError;
          console.error(`CameraDemo savePicture error: ${JSON.stringify(err)}`);
          promptAction.showToast({ message: `保存失败` })
        }
      }
    } else {
      console.error('CameraDemo SaveButtonOnClickResult createAsset failed.');
      promptAction.showToast({ message: `保存失败` })
    }
    setTimeout(() => {
      this.hasPicture = false;
      this.finalPixelMap = undefined;
    }, 1000)
  })

更多关于HarmonyOS鸿蒙Next中安全控件的保存控件SaveButton保存图片到相册失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,SaveButton控件用于将图片保存到相册。如果保存失败,可能的原因包括:

  1. 权限问题:应用未获取必要的存储权限。应用需要在config.json文件中声明ohos.permission.WRITE_USER_STORAGE权限,并在运行时动态请求用户授权。

  2. 路径问题:保存路径不正确或不可写。确保保存路径是有效的,并且应用有权限访问该路径。

  3. 文件格式问题:保存的图片格式不被系统支持。确保图片格式为常见的格式,如JPEG、PNG。

  4. 系统相册服务问题:系统相册服务可能未正确响应。检查系统相册服务是否正常运行。

  5. API调用问题:SaveButton控件的API调用可能存在问题。检查API调用是否正确,参数是否有效。

  6. 系统版本问题:当前系统版本可能存在Bug。检查系统版本是否为最新,是否有已知的相关Bug。

  7. 存储空间问题:设备存储空间不足。检查设备存储空间是否足够。

  8. 应用沙盒限制:应用沙盒可能限制了文件保存操作。确保应用沙盒配置正确,允许文件保存到相册。

解决这些问题需要逐一排查,确保权限、路径、文件格式、API调用、系统版本、存储空间和应用沙盒配置都正确无误。

在HarmonyOS鸿蒙Next中,使用SaveButton保存图片到相册失败可能涉及以下原因:

  1. 权限问题:确保应用已获取ohos.permission.WRITE_MEDIA权限,并在代码中动态申请。

  2. 存储路径:检查保存路径是否正确,建议使用ExternalStorage的公共目录,如Pictures

  3. 文件格式:确保图片格式(如JPEG、PNG)正确,文件名符合系统要求。

  4. 应用沙箱:确认操作是否在应用沙箱内执行,避免跨应用访问受限。

  5. 日志排查:通过LogHiLog查看具体错误信息,定位问题根源。

建议逐项排查以上问题,确保保存逻辑正确。

回到顶部