HarmonyOS鸿蒙Next中使用addAssets时,需要传一个类型为PhotoAsset类型的参数,但该参数为可读不可写的

HarmonyOS鸿蒙Next中使用addAssets时,需要传一个类型为PhotoAsset类型的参数,但该参数为可读不可写的 问题描述:

用createAsset创建文件,回调返回的是uri,然后用addAssets把文件添加到相册,参数是photoAsset,但是PhotoAsset中,能用的接口只返回uri,怎样都获取不到photoAsset

2 回复

保存图片需要使用官方SaveButton组件,此处给出示例代码。

存储图片的动作需要自己保存,即:需要把图片的数据拿到,手动存储到文件里面,不能仅仅是存储图片链接

import photoAccessHelper from '@ohos.file.photoAccessHelper';
import fs from '@ohos.file.fs';

@Entry
@Component
struct CompA {
  build() {
    Row() {
      Column() {
        Image($r('app.media.1'))
          .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.1').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: "设置权限失败" })
          }
        })
      }
    }
  }
}

更多关于HarmonyOS鸿蒙Next中使用addAssets时,需要传一个类型为PhotoAsset类型的参数,但该参数为可读不可写的的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,addAssets方法需要传入一个PhotoAsset类型的参数,但该参数是只读的。PhotoAsset是鸿蒙系统中用于表示图片资源的类,通常用于处理图片的元数据和相关操作。由于PhotoAsset是只读的,开发者无法直接修改其属性或内容。

PhotoAsset对象通常由系统或其他API生成,提供了对图片资源的只读访问。开发者可以通过PhotoAsset获取图片的相关信息,如ID、路径、尺寸等,但无法直接修改这些信息。如果需要将PhotoAsset添加到某个集合或资源池中,可以直接将该对象作为参数传递给addAssets方法,而无需对其进行修改。

这种设计确保了PhotoAsset对象的数据一致性和安全性,防止了意外的数据修改。开发者在使用PhotoAsset时,应遵循其只读特性,避免尝试修改其内容。

回到顶部