HarmonyOS鸿蒙Next中应用内同Modle以及跨Model跳转到指定页面

HarmonyOS鸿蒙Next中应用内同Modle以及跨Model跳转到指定页面

我的场景是首页会有banner,后台来配置不同的链接,可能是当前模块也有可能是其他模块的子页面,这个我应该怎么配置,还有怎么实现跳转呢?

3 回复

更多关于HarmonyOS鸿蒙Next中应用内同Modle以及跨Model跳转到指定页面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,应用内同Module跳转使用router.pushUrl(),目标页面需在module.json5中配置路由信息。跨Module跳转需先获取目标Module的Ability上下文,通过FeatureAbilityCallingAbility实现。具体步骤:

  1. 同Module跳转:
router.pushUrl({
  url: 'pages/TargetPage'
})
  1. 跨Module跳转:
let want = {
  bundleName: '目标模块Bundle名',
  abilityName: '目标Ability名',
  parameters: { key: value }
}
featureAbility.startAbility(want)

注意需在module.json5中声明目标页面的路由和模块导出能力。

在HarmonyOS Next中实现跨模块页面跳转,可以使用以下方案:

  1. 配置路由: 在模块的resources/base/profile/main_pages.json中配置页面路由路径,例如:
{
  "src": [
    "pages/Index",
    "pages/Detail"
  ]
}
  1. 同模块跳转: 使用router.pushUrl()方法:
import router from '@ohos.router';
router.pushUrl({
  url: 'pages/Detail'
})
  1. 跨模块跳转: 需要先在被跳转模块的module.json5中导出ability:
{
  "abilities": [
    {
      "name": "DetailAbility",
      "exported": true
    }
  ]
}

然后使用featureAbility跳转:

import featureAbility from '@ohos.ability.featureAbility';
featureAbility.startAbility({
  want: {
    bundleName: "目标模块bundleName",
    abilityName: "DetailAbility",
    parameters: {
      // 传递参数
    }
  }
});
  1. 动态路由处理: 对于后台配置的banner链接,可以建立路由映射表:
const routeMap = {
  'home': 'pages/Index',
  'detail': 'pages/Detail',
  // 其他模块路由...
};

function navigateTo(target) {
  const route = routeMap[target];
  if(route) {
    router.pushUrl({ url: route });
  }
}

注意需要在config.json中声明需要的权限:

{
  "reqPermissions": [
    {
      "name": "ohos.permission.START_ABILITIES_FROM_BACKGROUND"
    }
  ]
}
回到顶部