鸿蒙Next中entry如何跳转feature

在鸿蒙Next开发中,如何实现entry模块跳转到feature模块?具体需要配置哪些依赖或路由规则?能否提供代码示例说明跳转流程?

2 回复

鸿蒙Next里,entry想跳feature?简单!用FeatureAbilitystartAbility方法,传个Intent,带上目标feature的bundleNameabilityName,嗖一下就过去了!别忘在config.json里配好权限,不然门都找不到~

更多关于鸿蒙Next中entry如何跳转feature的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,entry模块跳转到feature模块可以通过隐式Want实现,因为feature模块是动态特性模块,不能直接使用相对路径或绝对路径跳转。以下是具体步骤和代码示例:

1. 配置feature模块的跳转信息

在feature模块的module.json5中,配置abilitiesskills,定义跳转的action和entities:

{
  "module": {
    "abilities": [
      {
        "name": "FeatureAbility",
        "srcEntry": "./ets/featureability/FeatureAbility.ts",
        "skills": [
          {
            "actions": [
              "action.feature.detail"
            ],
            "entities": [
              "entity.system.browsable"
            ]
          }
        ]
      }
    ]
  }
}

2. 在entry模块中发起跳转

在entry模块的页面中,使用want参数指定action和entities,调用startAbility

import common from '@ohos.app.ability.common';
import { BusinessError } from '@ohos.base';

let context: common.UIAbilityContext = ...; // 获取UIAbilityContext

let want = {
  action: 'action.feature.detail',
  entities: ['entity.system.browsable']
};

try {
  context.startAbility(want)
    .then(() => {
      console.info('跳转feature成功');
    })
    .catch((error: BusinessError) => {
      console.error('跳转失败: ' + error.message);
    });
} catch (error) {
  console.error('捕获异常: ' + error);
}

注意事项:

  • 模块依赖:确保entry模块在oh-package.json5中依赖了feature模块。
  • 动态特性:feature模块需配置为动态特性("installationFree": true),且设备支持动态部署。
  • 参数传递:可通过want.parameters传递数据到feature模块。

通过隐式Want匹配action和entities,系统会自动定位并启动feature模块的对应Ability。

回到顶部