OpenHarmony应用开发-应用如何跳转到图库媒体资源详情页
·
前言
在OpenHarmony应用开发中,应用内跳转到系统图库详情页是比较常见的需求。本文会具体介绍如何开发此功能。
开发环境
ohos设备: DAYU200
ohos系统: OpenHarmony 6.0.0.47
IDE: DevEco Studio 6.0.0 Release(Build Version: 6.0.0.858)
OpenHarmony SDK: ohos-sdk-full(6.0.0.47) (api20)
最佳实践示例
import { WinsleiLogManager } from '@winslei/winsleilog'
import dataSharePredicates from '@ohos.data.dataSharePredicates';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
import { common } from '@kit.AbilityKit';
const TAG = 'MediaLibraryTest3'
@Entry
@Component
struct MediaLibraryTest3 {
private context = getContext(this)
private phAccessHelper = photoAccessHelper.getPhotoAccessHelper(this.context);
private uri: string = ''
build() {
Column({ space: 20 }) {
Button('获取第一个相册的第一张图片')
.onClick(async (event) => {
let photoPredicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
let photoFetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: photoPredicates
};
try {
let photoFetchResult = await this.phAccessHelper.getAssets(photoFetchOptions);
let photoAsset = await photoFetchResult.getFirstObject();
WinsleiLogManager.hilogIWithTag(TAG, 'getFirstPhoto. photoAsset:' + JSON.stringify(photoAsset))
this.uri = photoAsset.uri
WinsleiLogManager.hilogIWithTag(TAG, 'getFirstPhoto. photoAsset.uri:' + JSON.stringify(this.uri))
photoFetchResult.close();
} catch (err) {
WinsleiLogManager.hilogIWithTag(TAG, 'getFirstPhoto. err:' + JSON.stringify(err))
}
})
Button('跳转到图库')
.onClick(() => {
let photoContext = this.context as common.UIAbilityContext;
photoContext.startAbility({
parameters: { uri: this.uri },
action: 'ohos.want.action.viewData',
bundleName: 'com.ohos.photos',
abilityName: 'com.ohos.photos.MainAbility'
}).catch(() => {
WinsleiLogManager.hilogIWithTag(TAG, 'startAbility failed.')
})
})
}
.height('100%')
.width('100%')
}
}
FAQ
为什么上述示例在hos系统上效果异常
hos和ohos的系统图库的包名不一致,如果需要在hos上正常运行,需要将abilityName
和bundleName
分别改为com.huawei.hmos.photo
和com.huawei.hmos.photos.MainAbility
。
更多推荐
所有评论(0)