通过AVStorage访问系统相册 原创
前几天有朋友在我帖子下问如何通过AVStorage来获取系统相册的图片,这个操作在我们平时开发时也经常用到,这里就新开一篇帖子分享一下鸿蒙系统访问系统相册的方法。
核心代码参考官方媒体存储数据操作开发指导的示例:
鸿蒙的AVStorage对应的是Android中的MediaStore,都是用于操作系统媒体数据库的类,但是现在开放的功能不如MediaStore强大,很多操作需要用的字段还找不到,这里我先通过一段安卓程序往系统相册目录中写入三张图片,并插入媒体数据库:
这里我是放在点击事件回调中,点击三次,插入了三张同样的图片,该方法会自动给重复的图片重命名,通过AS的文件管理器和系统的图库我们可以看到已经写入成功了,接下来再用系统相机拍两张照片,以创建不同来源的媒体图片,同样可在文件管理器和图库中查看结果。
这样,数据就做好了,接下来,我们通过鸿蒙提供的API来获取系统相册的图片并显示出来。
首先,读取系统相册需要获取ohos.permission.READ_USER_STORAGE权限,我们需要在config.json中加入如下代码:
并且,该权限需要动态申请,我们需要在ability中手动申请权限:
获取到权限之后,我们就可以通过DataAbilityHelper和AVStorage来查询媒体数据库了,获取媒体外部存储中的图片URI需要使用的预定义字段是:AVStorage.Images.Media.EXTERNAL_DATA_ABILITY_URI:
我们通过一个TableLayout来模仿图库界面展示获取到的系统相册图片:
至此,我们就获取到了系统相册目录下的图片。
(此文章是本人之前在鸿蒙论坛发的贴子,我会把之前的文章先挪过来,今后关于鸿蒙的技术文章会转移到此处,附上原文链接
https://developer.huawei.com/consumer/cn/forum/topic/0204475171137570132?fid=0101303901040230869)
顶一个 好文!!!