HarmonyOS 鸿蒙Next SaveButton保存图片授权失败

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next SaveButton保存图片授权失败

使用SaveButton保存图片失败,日志如下,请问是什么原因
[nodict][ReportSecurityComponentClickEvent]:report click event fail, error: -56
[nodict][security_component_pattern.cpp(operator())-(100000:100000:scope)] ReportSecurityComponentClickEvent failed, errno -56


更多关于HarmonyOS 鸿蒙Next SaveButton保存图片授权失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
参考如下demo
import photoAccessHelper from '@ohos.file.photoAccessHelper';
import fs from '@ohos.file.fs';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
  build() {
    Row() {
      Column() {
        Image($r('app.media.product002'))
          .height(300)
          .width(300)
        SaveButton().onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {
          if (result == SaveButtonOnClickResult.SUCCESS) {
            try {
              const context = getContext(this);
              let helper = photoAccessHelper.getPhotoAccessHelper(context);
              // onClick触发后5秒内通过createAsset接口创建图片文件,5秒后createAsset权限收回。
              let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg');
  // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制
              let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
              try {
                context.resourceManager.getMediaContent($r('app.media.product002').id, 0)
                  .then(async value => {
                    let media = value.buffer;
                    // 写到媒体库文件中
                    await fs.write(file.fd, media);
                    await fs.close(file.fd);
                    AlertDialog.show({message:'已保存至相册!'});
                  });
              }
              catch (err) {
                console.error("error is "+ JSON.stringify(err))
              }
            } catch (error) {
              console.error("error is "+ JSON.stringify(error));
            }
          }
          else {
            AlertDialog.show({ message: "设置权限失败" })
          }
        })
      }
      .width('100%')
    }
    .height('100%') }
}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

更多关于HarmonyOS 鸿蒙Next SaveButton保存图片授权失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS 鸿蒙Next SaveButton保存图片授权失败的问题,以下是一些专业的解决方案:

  1. 确认授权流程:SaveButton允许用户通过点击按钮临时获取存储权限,无需额外的编写权限申请代码。当用户首次点击应用中的保存控件,系统将弹窗请求用户授权。如果用户点击“允许”,应用将被授予临时保存权限。
  2. 检查代码实现:确保SaveButton的点击事件处理逻辑正确,且在获得授权后,及时调用相关API进行图片保存。注意,创建图片文件需要在授权有效期内(如10秒内)完成。
  3. 检查设备权限:确认设备是否已授予应用必要的存储权限。如果设备未授予权限,SaveButton将无法正常工作。
  4. 检查设备兼容性和存储空间:确保设备兼容鸿蒙Next系统,并检查设备存储空间是否足够。存储空间不足也可能导致保存失败。

如果以上步骤均无法解决问题,建议联系官网客服获取进一步的技术支持。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部