HarmonyOS 鸿蒙Next中一次性获取多个图片信息
HarmonyOS 鸿蒙Next中一次性获取多个图片信息
按照官方教程选择完图片后获取图片的信息,官方例子中 predicates 用的 equalTo,我想是否可以一次性获取多个图片的信息,所以用 in 试了下,发现 fetchResult 是 undefined,想问下是哪里有问题呢?
const PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_VIDEO_TYPE;
PhotoSelectOptions.maxSelectNumber = 9;
const photoPicker = new photoAccessHelper.PhotoViewPicker();
const result = await photoPicker.select(PhotoSelectOptions);
const photoUris = result.photoUris;
const predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
predicates.in(photoAccessHelper.PhotoKeys.URI, photoUris);
const fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [photoAccessHelper.PhotoKeys.TITLE, photoAccessHelper.PhotoKeys.SIZE,
photoAccessHelper.PhotoKeys.PHOTO_TYPE],
predicates: predicates
};
const fetchResult = await this._photoAccessHelper.getAssets(fetchOptions)
let photoAssets: photoAccessHelper.PhotoAsset[] = await fetchResult.getAllObjects();
更多关于HarmonyOS 鸿蒙Next中一次性获取多个图片信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,可使用@ohos.file.picker
模块的PhotoViewPicker一次性获取多张图片信息。具体实现如下:
import picker from '@ohos.file.picker';
let photoPicker = new picker.PhotoViewPicker();
photoPicker.select({
maxSelectNumber: 5, // 最大选择数量
MIMEType: picker.PhotoViewMIMETypes.IMAGE_TYPE
}).then((uris) => {
// uris为选择的图片URI数组
}).catch((err) => {
console.error(`PhotoViewPicker failed: ${err}`);
});
该方法返回图片URI数组,通过URI可进一步获取图片详细信息。注意需在config.json中声明ohos.permission.READ_IMAGEVIDEO
权限。
更多关于HarmonyOS 鸿蒙Next中一次性获取多个图片信息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,使用in
操作符获取多个图片信息时出现fetchResult
为undefined的问题,可能是由于URI格式不匹配导致的。以下是关键点分析:
-
photoUris
数组中的URI格式需要与数据库中存储的格式完全一致(包括协议头和路径格式) -
建议先检查
photoUris
内容是否正确:
console.log(JSON.stringify(photoUris));
- 替代方案可以改用
or
条件组合多个equalTo
:
const predicates = new dataSharePredicates.DataSharePredicates();
photoUris.forEach(uri => {
predicates.or().equalTo(photoAccessHelper.PhotoKeys.URI, uri);
});
- 确保
_photoAccessHelper
已正确初始化并具有查询权限
如果问题仍然存在,建议先验证单个URI查询是否正常,再逐步扩展到多个URI查询。