HarmonyOS 鸿蒙Next photoAsset读取photoAccessHelper.PhotoKeys.SIZE失败

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next photoAsset读取photoAccessHelper.PhotoKeys.SIZE失败

【关键字】

phAccessHelper / 相册管理模块 / getAssets / photoAsset / 14000014

【问题描述】

用phAccessHelper.getAssets读取媒体文件后,再用photoAsset读取媒体信息时失败,报错如下:size is err = 14000014; err message: member not exist,但是我看API参考文档介绍里是可以的。

代码如下:

async readMedia(){
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
// 排序
predicates.orderByDesc(photoAccessHelper.PhotoKeys.DATE_MODIFIED)
let fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates,
};

try {
let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
fetchResult.getAllObjects().then((photoAssets: photoAccessHelper.PhotoAsset[])=>{
photoAssets.forEach((photoAsset: photoAccessHelper.PhotoAsset)=>{
console.info('getAssets photoAsset.uri : ' + photoAsset.uri);
console.info('getAssets displayName = ', photoAsset.displayName);
this.getAssets(photoAsset, photoAccessHelper.PhotoKeys.TITLE)
this.getAssets(photoAsset, photoAccessHelper.PhotoKeys.PHOTO_TYPE)
this.getAssets(photoAsset, photoAccessHelper.PhotoKeys.DISPLAY_NAME)
this.getAssets(photoAsset, photoAccessHelper.PhotoKeys.SIZE)
this.getAssets(photoAsset, photoAccessHelper.PhotoKeys.DURATION)
this.getAssets(photoAsset, photoAccessHelper.PhotoKeys.DATE_ADDED)
this.getAssets(photoAsset, photoAccessHelper.PhotoKeys.DATE_MODIFIED)
this.getAssets(photoAsset, photoAccessHelper.PhotoKeys.DATE_TAKEN)
this.getAssets(photoAsset, photoAccessHelper.PhotoKeys.WIDTH)
this.getAssets(photoAsset, photoAccessHelper.PhotoKeys.HEIGHT)

// 图片
if (photoAsset.photoType === photoAccessHelper.PhotoType.IMAGE){
this.data.push({
itemType: MediaItemType.IMAGE,
urlType: MediaType.LOCAL,
url: photoAsset.uri
})
}else if(photoAsset.photoType === photoAccessHelper.PhotoType.VIDEO){
// 视频
photoAsset.getThumbnail((err, pixelMap) => {
if (err === undefined) {
console.info('getThumbnail successful ' + pixelMap);
this.data.push({
itemType: MediaItemType.VIDEO,
urlType: MediaType.LOCAL,
url: photoAsset.uri,
thumbnailPixMap: pixelMap
})
} else {
console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`);
}
});
}
this.testFetchMetadataFromDataSrc(photoAsset.uri)
})
})

fetchResult.close();
} catch (err) {
console.error('getAssets failed with err: ' + err);
}
}

API介绍如下:

/**
* Returns the value of the specified member.
*
* @param { string } member - Photo asset member. for example : get(PhotoKeys.SIZE)
* @returns { MemberType } Returns the value of the specified photo asset member
* @throws { BusinessError } 401 - if parameter is invalid
* @throws { BusinessError } 13900020 - Invalid argument
* @throws { BusinessError } 14000014 - Member is not a valid PhotoKey
* @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
* @since 10
*/
get(member: string): MemberType;

【解决方案】

原因是getAssets时没有在fetchColumn里面指定key。

参考:

fetchColumns: [photoAccessHelper.PhotoKeys.WIDTH, photoAccessHelper.PhotoKeys.HEIGHT, photoAccessHelper.PhotoKeys.TITLE],

API文档地址: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-photoaccesshelper-V5#get


更多关于HarmonyOS 鸿蒙Next photoAsset读取photoAccessHelper.PhotoKeys.SIZE失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next photoAsset读取photoAccessHelper.PhotoKeys.SIZE失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题中提到的“HarmonyOS 鸿蒙Next photoAsset读取photoAccessHelper.PhotoKeys.SIZE失败”的问题,这里提供可能的解决方案:

在HarmonyOS系统中,如果你遇到在读取photoAsset时使用photoAccessHelper.PhotoKeys.SIZE失败的情况,这通常意味着在访问照片资产(photoAsset)时,相关的权限或键(Key)可能未被正确设置或获取。

  1. 检查权限: 确保你的应用已经正确申请了访问照片库的权限。在HarmonyOS中,这通常需要在manifest文件中声明相应的权限,并在运行时请求用户授权。

  2. 检查Key的正确性: 确认photoAccessHelper.PhotoKeys.SIZE这个Key在你的上下文中是有效的。有时候,如果API或框架有更新,某些Key可能会被弃用或更改。

  3. API版本兼容性: 检查你的代码是否与你正在使用的HarmonyOS版本兼容。不同版本的操作系统可能支持不同的API和功能。

  4. 代码审查: 仔细检查你的代码,确保在调用photoAccessHelper.PhotoKeys.SIZE之前,相关的photoAsset对象已经被正确初始化并且是可用的。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部