HarmonyOS 鸿蒙Next 使用SaveButton存储图片到相册失败

发布于 1周前 作者 eggper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用SaveButton存储图片到相册失败

SaveButton().onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {
if (result == SaveButtonOnClickResult.SUCCESS) {
try {
const context = getContext(this);
let helper =
photoAccessHelper.getPhotoAccessHelper(context); // onClick触发后10秒内通过createAsset接口创建图片文件,10秒后createAsset权限收回。 
let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE,
‘png’); // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制 
let file = await fileIo.open(uri, fileIo.OpenMode.READ_WRITE |
fileIo.OpenMode.CREATE);
// 写入文件 
await fileIo.write(file.fd, “context”);
// 关闭文件 
await fileIo.close(file.fd);
} catch (error) {
console.error("error is " + JSON.stringify(error));
}
}
}) 

调用的官方提供的demo,保存到手机相册的照片是白色的没有任何内容。


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

3 回复

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


你没写入图片数据当然是空白的

这句代码就有问题await fileIo.write(file.fd, "context")

在HarmonyOS 鸿蒙Next系统中,使用SaveButton存储图片到相册失败的问题可能由多种因素导致。首先,请确保你的应用已获得存储权限。在鸿蒙系统中,应用需要用户明确授权才能访问存储。如果权限未被授予,存储操作将失败。

其次,检查SaveButton的实现逻辑。确保在点击按钮时,有正确的代码逻辑来读取图片数据,并调用鸿蒙系统提供的API进行存储。鸿蒙系统提供了特定的API用于存储文件到相册,如MediaStore等,请确保你使用的是这些API,并且参数传递正确。

此外,还需要注意图片格式和大小是否符合系统要求。某些格式或过大的图片可能无法被系统正确存储。

如果以上都确认无误,还需检查是否有其他系统级错误或异常导致存储失败。例如,系统存储空间不足、文件系统错误等。

最后,确保你的鸿蒙系统版本和SDK版本匹配,并且没有已知的bug影响存储功能。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部