通过相册名获取相册资源

通过相册名获取相册资源

HarmonyOS
2024-05-20 22:08:33
431浏览
收藏 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}`); 
    }) 
  }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.

分享
微博
QQ
微信
回复
2024-05-22 15:57:46


相关问题
如何动态根据资源获取资源id
9563浏览 • 1回复 已解决
用户相册, 获取不到albumName
2337浏览 • 1回复 待解决
HarmonyOS 获取系统相册报错
933浏览 • 1回复 待解决
HarmonyOS 用户相册和系统相册概念
707浏览 • 1回复 待解决
HarmonyOS 如何获取系统相册的数据
578浏览 • 1回复 待解决
HarmonyOS App获取相册图片的问题
837浏览 • 1回复 待解决
HarmonyOS怎么获取系统相册的路径
1047浏览 • 1回复 待解决
获取网络图片并保存到相册
2851浏览 • 1回复 待解决
HarmonyOS获取相册视频的宽高问题
1244浏览 • 1回复 待解决
HarmonyOS如何获取用户相册所有目录?
3065浏览 • 1回复 待解决
HarmonyOS 获取相册里的图片和视频ID
599浏览 • 1回复 待解决
HarmonyOS 获取相册视频的sha1签名
732浏览 • 1回复 待解决