HarmonyOS鸿蒙Next中使用addAssets时,需要传一个类型为PhotoAsset类型的参数,但该参数为可读不可写的
HarmonyOS鸿蒙Next中使用addAssets时,需要传一个类型为PhotoAsset类型的参数,但该参数为可读不可写的 问题描述:
用createAsset创建文件,回调返回的是uri,然后用addAssets把文件添加到相册,参数是photoAsset,但是PhotoAsset中,能用的接口只返回uri,怎样都获取不到photoAsset
保存图片需要使用官方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
时,应遵循其只读特性,避免尝试修改其内容。