HarmonyOS - 本地相册的纠葛 原创 精华
作者:庄茂裕
前言:
二月再见,三月你好,阳春三月万物复苏,愿一切美好都如约而至。携手共创,鸿蒙社区。前几天有个同事问我如何把图片存在系统相册的图片,当时我就懵逼了,鸿蒙的好像真的不怎么懂?而且这个操作在我们平时开发时也经常用到,所以搞起。
效果展示
踩坑之路
1.应该官网有介绍吧,去官网看看,发现是有一丢丢介绍
附上链接:
2.都说安卓和鸿蒙差不多,应该思路是差不多的吧,于是找到一片文章(https://harmonyos.51cto.com/posts/10568)里面有MediaStore类,用于操作系统媒体数据库的类,鸿蒙确实也有个类似的类AVStorage,但是现在开放的功能不如MediaStore强大。
3.后面发现是鸿蒙的设计思路有点像ios的,每个应用的都有独自沙河目录,每个app的数据都存储在当前的应用当中,这样大大的确保数据的隐蔽性和安全性,这样比安卓安全性好很多。
保存图片到系统相册
demo布局:
效果如图:
涉及权限
权限 | 描述 |
---|---|
ohos.permission.WRITE_USER_STORAGE | 写文件权限。 |
ohos.permission.READ_USER_STORAGE | 读文件权限 |
config.json权限配置如下:
动态申请权限
需要动态申请这两个权限,申请时会有权限弹窗,不写的话,不会有权限弹窗,但是也是可以使用的。
保存图片
获取到权限之后,就可以保存图片到系统相册了,我们媒体的增删改查都需要用到DataAbilityHelper和AVStorage。
效果如下
读取本地相册图片
在config.json中配置读取文件权限(ohos.permission.READ_USER_STORAGE)
在ability中手动申请权限
弹出数据来源选择框,获取数据来源的方式。
效果如图:
下面是选择图片的回调,imgRequestCode字段的是自定义的,必须是int的类型,这个字段是和上面的selectPhoto()方法里面的imgRequestCode是一致的,根据这个imgRequestCode来判断是否从选择图片的回调回来的,
总结
官网现有文档不多,开发鸿蒙的时候遇到很多问题,有安卓基础的小伙伴可以参考安卓的思路去解决,应该可以事半功倍,希望本次分享对大家有所帮助。
更多原创内容请关注:中软国际 HarmonyOS 技术团队
入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
通过这个实践学到了很多东西,感谢楼主分享
这个是 java的写法,有没有纯js的?
好厉害👍