在开发OpenHarmony的时候,经常遇到需要把所有测试功能的hap做成一个hap的需求。显然如果一个hap内集成所有测试hap的方案需要花费较大时间成本且各个测试hap之间api并不统一。这里采用应用间跳转的方式。
实现思路
1.这里采用指定Ability方式(即显式Want)拉起其他应用方式。
import Want from '@ohos.app.ability.Want';
import common from '@ohos.app.ability.common';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@ohos.base';
@Entry
@Component
struct Index {
context = getContext(this) as common.UIAbilityContext;
navPathStack: NavPathStack = new NavPathStack();
@Styles
commonButton() {
.width(250)
.margin(5)
}
build() {
Navigation(this.navPathStack) {
Column() {
Text('通过startAbility拉起:')
Button('跳转系统相机')
.onClick(() => {
let want: Want = {
bundleName: 'com.ohos.camera',
abilityName: 'com.ohos.camera.MainAbility',
};
this.context.startAbilityForResult(want).then((data) => {
hilog.info(0x0000, 'Success', JSON.stringify(data))
}).catch(() => {
hilog.info(0x0000, 'error', '')
})
})
.commonButton()
Button('跳转系统设置wifi页面')
.onClick(() => {
let want: Want = {
bundleName: 'com.ohos.settings',
abilityName: 'com.ohos.settings.MainAbility',
uri: 'wifi', // 对应wifi设置页,不传就跳转系统设置首页/当前所在页
};
this.context.startAbility(want).then(() => {
}).catch((err: BusinessError) => {
hilog.error(0x0000, 'Failed to startAbility. Code:', `${err.code}${err.message}`);
});
})
.commonButton()
Button('跳转系统设置蓝牙页面')
.onClick(() => {
let want: Want = {
bundleName: 'com.ohos.settings',
abilityName: 'com.ohos.settings.MainAbility',
uri: 'bluetooth', // 对应wifi设置页,不传就跳转系统设置首页/当前所在页
};
this.context.startAbility(want).then(() => {
}).catch((err: BusinessError) => {
hilog.error(0x0000, 'Failed to startAbility. Code:', `${err.code}${err.message}`);
});
})
.commonButton()
Button('跳转系统音乐应用')
.onClick(() => {
let want: Want = {
bundleName: 'ohos.samples.distributedmusicplayer',
abilityName: 'ohos.samples.distributedmusicplayer.MainAbility',
uri: 'bluetooth', // 对应wifi设置页,不传就跳转系统设置首页/当前所在页
};
this.context.startAbility(want).then(() => {
}).catch((err: BusinessError) => {
hilog.error(0x0000, 'Failed to startAbility. Code:', `${err.code}${err.message}`);
});
})
.commonButton()
}
.width('100%')
.height('100%')
}
.title('拉起系统及三方应用')
}
}