HarmonyOS鸿蒙Next中启动应用内的UIAbility

HarmonyOS鸿蒙Next中启动应用内的UIAbility

启动应用内的UIAbility

作者:坚果

组织:坚果组织,欢迎大家加入坚果组织

当一个应用内包含多个UIAbility时,存在应用内启动UIAbility的场景。例如在支付应用中从入口UIAbility启动收付款UIAbility。

假设应用中有两个UIAbility:EntryAbility和SecondAbility(可以在应用的一个Module中,也可以在的不同Module中),需要从EntryAbility的页面中启动SecondAbility。

在EntryAbility中,通过调用startAbility()方法启动UIAbility,want为UIAbility实例启动的入口参数,其中bundleName为待启动应用的Bundle名称,abilityName为待启动的Ability名称,moduleName在待启动的UIAbility属于不同的Module时添加,parameters为自定义信息参数。

let wantInfo = {
    deviceId: '', // deviceId为空表示本设备
    bundleName: 'com.jianguo.ohtest',
    abilityName: 'SecondAbility',
    parameters: { // 自定义信息
        info: '来自EntryAbility Index页面',
    },
}
// context为调用方UIAbility的UIAbilityContext
this.context.startAbility(wantInfo).then(() => {
    // ...
}).catch((err) => {
    // ...
})

更多关于HarmonyOS鸿蒙Next中启动应用内的UIAbility的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
你好,我也是想打开同一个应用下的另外一个module,但是无法打开,
报错:Error: The specified ability does not exist.
参数:
let want = { "deviceId": "", "bundleName": "com.example.myapp01", "abilityName": "Entry1Ability","moduleName":"entry1" }

其中bundleName 因为在同一个应用内所以和启动的module共用一个bundleName,

更多关于HarmonyOS鸿蒙Next中启动应用内的UIAbility的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你检查一下你另外一个module的module.json5文件看看,我这样配置就能打开,

在HarmonyOS鸿蒙Next中,启动应用内的UIAbility可以通过startAbility方法实现。首先,确保UIAbility已在config.json中正确配置。然后,使用AbilityContextstartAbility方法,传入包含目标UIAbility的Want对象。例如:

let want = {
    bundleName: "com.example.myapp",
    abilityName: "com.example.myapp.MainAbility"
};
this.context.startAbility(want).then(() => {
    console.log("UIAbility started successfully");
}).catch((err) => {
    console.error("Failed to start UIAbility", err);
});

此代码将启动指定的UIAbility,并处理成功或失败的情况。

回到顶部