鸿蒙Next如何长按保存图片到相册
在鸿蒙Next系统里,长按图片想保存到相册时没有弹出保存选项,具体应该如何操作?有些应用能直接保存,但部分网页或第三方APP里的图片长按后只有分享功能,求教正确的保存方法或需要开启什么权限?
2 回复
鸿蒙Next长按保存图片?简单!长按图片→点“保存到相册”→搞定!如果没反应,记得先给应用相册权限哦~(程序员附体:别问我为什么知道,都是泪的教训😂)
更多关于鸿蒙Next如何长按保存图片到相册的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next中,长按保存图片到相册可以通过以下步骤实现:
-
添加权限:在
module.json5文件中添加存储权限:{ "module": { "requestPermissions": [ { "name": "ohos.permission.WRITE_IMAGE" } ] } } -
使用长按事件:在图片组件上绑定长按手势,触发保存操作:
import { Image } from '[@kit](/user/kit).ArkUI'; import { mediaLibrary } from '[@kit](/user/kit).MediaLibraryKit'; import { promptAction } from '[@kit](/user/kit).ArkUI'; [@Entry](/user/Entry) [@Component](/user/Component) struct SaveImageExample { @State imageSrc: Resource = $r('app.media.example_image'); // 长按保存图片 async onLongPress() { try { // 获取媒体库实例 let media = mediaLibrary.getMediaLibrary(); // 创建图片文件(需替换为实际图片数据) let file = await media.createAsset( mediaLibrary.MediaType.IMAGE, 'my_image.jpg', (err) => { if (err) { promptAction.showToast({ message: '保存失败' }); return; } } ); // 写入图片数据(此处需替换为实际图片的ArrayBuffer) // await file.writeBuffer(imageData); promptAction.showToast({ message: '图片已保存到相册' }); } catch (error) { promptAction.showToast({ message: '保存失败: ' + error }); } } build() { Column() { Image(this.imageSrc) .width(200) .height(200) .onTouch((event) => { if (event.type === TouchType.LongPress) { this.onLongPress(); } }) } } }
注意事项:
- 实际图片数据需通过网络或资源转换获取,示例中需补充
imageData(ArrayBuffer类型)。 - 确保在真机上测试,模拟器可能无相册功能。
- 首次使用需用户授权存储权限。
通过以上代码,长按图片即可触发保存到相册功能。

