通过相册名获取相册资源

通过相册名获取相册资源

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
8651浏览 • 1回复 已解决
用户相册, 获取不到albumName
1800浏览 • 1回复 待解决
HarmonyOS 获取系统相册报错
250浏览 • 1回复 待解决
HarmonyOS怎么获取系统相册的路径
439浏览 • 1回复 待解决
HarmonyOS App获取相册图片的问题
27浏览 • 1回复 待解决
获取网络图片并保存到相册
1524浏览 • 1回复 待解决
HarmonyOS如何获取用户相册所有目录?
2186浏览 • 1回复 待解决
HarmonyOS获取相册视频的宽高问题
479浏览 • 1回复 待解决
HarmonyOS 获取相册里的图片和视频ID
41浏览 • 1回复 待解决
HarmonyOS相册权限问题
612浏览 • 1回复 待解决