通过相册名获取相册资源

通过相册名获取相册资源

HarmonyOS
2024-05-20 22:08:33
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

通过相册名获取相册资源,首先通过数据库字段,筛选出相册结果集,然后通过相册结果集去遍历出结果集中的图片对象,代码如下

先在module.json5文件里,requestPermissions中配置ohos.permission.READ_IMAGEVIDEO权限,然后在自动签名后,在代码中向用户获取权限

导入模块

import { BusinessError } from '@ohos.base'; 
import photoAccessHelper from '@ohos.file.photoAccessHelper'; 
import dataSharePredicates from '@ohos.data.dataSharePredicates'; 
  async getPhoto(context){ 
    let atManager = abilityAccessCtrl.createAtManager(); 
    // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗 
    const permissions: Array<Permissions> = ['ohos.permission.READ_IMAGEVIDEO']; 
    atManager.requestPermissionsFromUser(context, permissions).then(async (data) => { //需要用户允许授权图库权限 
      let grantStatus: Array<number> = data.authResults; 
      let length: number = grantStatus.length; 
      for (let i = 0; i < length; i++) { 
        if (grantStatus[i] === 0) {  //用户同意权限之后进行的操作 
          let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);  //context为getContext获取 
          console.info('albumGetAssetsDemoPromise'); 
          let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); //筛选条件 
          let predicates1: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();//筛选条件 
          predicates.equalTo('album_name', 'test');//test为相册名 
          let albumFetchOptions: photoAccessHelper.FetchOptions = { 
            fetchColumns: [], 
            predicates: predicates 
          }; 
          let fetchOption: photoAccessHelper.FetchOptions = { 
            fetchColumns: [], 
            predicates: predicates1 
          }; 
          const albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper. 
          getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); //获取满足条件的相册列表,如果没加筛选条件就是所有相册 
          const album: photoAccessHelper.Album = await albumList.getFirstObject();  //获取第一个相册 
          album.getAssets(fetchOption).then(async (albumFetchResult) => { 
            while (!albumFetchResult.isAfterLast()) { //循环打印相册中的图片 
              let photoAsset: photoAccessHelper.PhotoAsset = await albumFetchResult.getNextObject(); 
              photoAsset.getThumbnail() 
              console.info('photoAsset displayName: ', photoAsset.uri); //图片视频资源uri 
            } 
          }).catch((err: BusinessError) => { 
            console.error('album getPhotoAssets failed with error: ' + err); 
          }); 
        } else { 
          // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限 
          return; 
        } 
      } 
      // 授权成功 
    }).catch((err) => { 
      console.error(`requestPermissionsFromUser failed, code is ${err.code}, message is ${err.message}`); 
    }) 
  }

分享
微博
QQ
微信
回复
2024-05-22 15:57:46
相关问题
用户相册, 获取不到albumName
387浏览 • 1回复 待解决
如何动态根据资源获取资源id
7145浏览 • 1回复 已解决
获取网络图片并保存到相册
369浏览 • 1回复 待解决
HarmonyOS如何获取用户相册所有目录?
489浏览 • 1回复 待解决
拉起相册选择图片页面失败
399浏览 • 1回复 待解决
选择相册怎么等待返回啊?
779浏览 • 1回复 待解决
鸿蒙请求相册和相机的demo?
4228浏览 • 1回复 待解决
如何保存本地图片到相册
192浏览 • 1回复 待解决
如何读取相册中的图片
176浏览 • 1回复 待解决
鸿蒙开发保存页面到相册
4729浏览 • 1回复 待解决
如何保存网络图片到相册
181浏览 • 1回复 待解决
相册扫码识别多码失败
555浏览 • 1回复 待解决
如何对相册图片进行编辑裁剪
633浏览 • 1回复 待解决
鸿蒙相册里的最近删除文件夹在哪?
15742浏览 • 1回复 待解决
如何将视频保存到相册以及主机端
4010浏览 • 1回复 待解决
OpenHarmony 设备 如何往相册传个图片
1068浏览 • 2回复 待解决
进入相册或拍照选择图片做头像
12026浏览 • 2回复 已解决
求大佬告知如何保存图片到相册
293浏览 • 1回复 待解决
怎么把视频保存到相册以及主机端?
2517浏览 • 1回复 待解决
如何通过资源ID拿到对应资源
5806浏览 • 3回复 待解决