HarmonyOS鸿蒙Next中安全控件的保存控件SaveButton保存图片到相册失败
HarmonyOS鸿蒙Next中安全控件的保存控件SaveButton保存图片到相册失败
安全控件的保存控件SaveButton保存图片到相册失败 之前想要申请ohos.permission.READ_IMAGEVIDEO、ohos.permission.WRITE_IMAGEVIDEO
权限被拒绝。转而使用保存在线图片到相册功能使用SaveButton功能,结果提示错误码"13900012"
需先下载到沙箱,再保存视频/图片到图库相册;如下是图片保存到图库的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控件用于将图片保存到相册。如果保存失败,可能的原因包括:
-
权限问题:应用未获取必要的存储权限。应用需要在
config.json文件中声明ohos.permission.WRITE_USER_STORAGE权限,并在运行时动态请求用户授权。 -
路径问题:保存路径不正确或不可写。确保保存路径是有效的,并且应用有权限访问该路径。
-
文件格式问题:保存的图片格式不被系统支持。确保图片格式为常见的格式,如JPEG、PNG。
-
系统相册服务问题:系统相册服务可能未正确响应。检查系统相册服务是否正常运行。
-
API调用问题:SaveButton控件的API调用可能存在问题。检查API调用是否正确,参数是否有效。
-
系统版本问题:当前系统版本可能存在Bug。检查系统版本是否为最新,是否有已知的相关Bug。
-
存储空间问题:设备存储空间不足。检查设备存储空间是否足够。
-
应用沙盒限制:应用沙盒可能限制了文件保存操作。确保应用沙盒配置正确,允许文件保存到相册。
解决这些问题需要逐一排查,确保权限、路径、文件格式、API调用、系统版本、存储空间和应用沙盒配置都正确无误。
在HarmonyOS鸿蒙Next中,使用SaveButton保存图片到相册失败可能涉及以下原因:
-
权限问题:确保应用已获取
ohos.permission.WRITE_MEDIA权限,并在代码中动态申请。 -
存储路径:检查保存路径是否正确,建议使用
ExternalStorage的公共目录,如Pictures。 -
文件格式:确保图片格式(如JPEG、PNG)正确,文件名符合系统要求。
-
应用沙箱:确认操作是否在应用沙箱内执行,避免跨应用访问受限。
-
日志排查:通过
Log或HiLog查看具体错误信息,定位问题根源。
建议逐项排查以上问题,确保保存逻辑正确。

