通过相册名获取相册资源

通过相册名获取相册资源

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
相关问题
如何动态根据资源获取资源id
8515浏览 • 1回复 已解决
用户相册, 获取不到albumName
1691浏览 • 1回复 待解决
HarmonyOS 获取系统相册报错
87浏览 • 1回复 待解决
HarmonyOS怎么获取系统相册的路径
325浏览 • 1回复 待解决
获取网络图片并保存到相册
1295浏览 • 1回复 待解决
HarmonyOS如何获取用户相册所有目录?
1994浏览 • 1回复 待解决
HarmonyOS获取相册视频的宽高问题
338浏览 • 1回复 待解决
HarmonyOS相册权限问题
491浏览 • 1回复 待解决
HarmonyOS如何打开手机相册
248浏览 • 1回复 待解决
HarmonyOS图片保存相册问题
355浏览 • 1回复 待解决
拉起相册选择图片页面失败
1825浏览 • 1回复 待解决
选择相册怎么等待返回啊?
1973浏览 • 1回复 待解决
HarmonyOS 保存图片到相册问题
168浏览 • 1回复 待解决
HarmonyOS 如何拉起手机相册
187浏览 • 1回复 待解决
如何读取相册中的图片
779浏览 • 1回复 待解决
鸿蒙开发保存页面到相册
6304浏览 • 1回复 待解决