鸿蒙Next开发中如何实现一个UIAbility跳转到另一个UIAbility

在鸿蒙Next开发中,我想实现一个UIAbility跳转到另一个UIAbility,但不太清楚具体该怎么操作。能否详细说明一下实现步骤?需要调用哪些接口,参数如何配置?如果有示例代码就更好了。另外,跳转时如何传递数据,以及两个UIAbility之间的生命周期如何管理?希望得到解答,谢谢!

2 回复

在鸿蒙Next中,UIAbility跳转就像喊朋友串门一样简单!用startAbility()方法,带上目标UIAbility的want参数,系统就会帮你开门。记得在module.json5里配置好目标UIAbility,不然系统会迷路哦~

更多关于鸿蒙Next开发中如何实现一个UIAbility跳转到另一个UIAbility的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,UIAbility之间的跳转可以通过startAbility()方法实现。以下是具体步骤和代码示例:

  1. 配置目标UIAbility
    module.json5文件中注册目标UIAbility:

    "abilities": [
      {
        "name": "TargetAbility",
        "srcEntry": "./ets/targetability/TargetAbility.ts",
        "exported": true  // 必须设置为true允许跨Ability访问
      }
    ]
    
  2. 发起跳转的代码
    在源UIAbility中调用startAbility(),通过Want对象指定目标Ability:

    import common from '[@ohos](/user/ohos).app.ability.common';
    import { BusinessError } from '[@ohos](/user/ohos).base';
    
    let context: common.UIAbilityContext = this.context; // 获取当前UIAbility的Context
    
    let wantInfo = {
      deviceId: "", // 空表示本设备
      bundleName: "com.example.myapp", // 目标应用包名
      abilityName: "TargetAbility", // 目标Ability名
      parameters: { // 可选传递参数
        key1: "value1"
      }
    };
    
    context.startAbility(wantInfo).then(() => {
      console.log('跳转成功');
    }).catch((err: BusinessError) => {
      console.error('跳转失败: ' + JSON.stringify(err));
    });
    

关键点说明

  • 设备ID:留空表示当前设备,跨设备需指定目标设备ID。
  • 参数传递:通过parameters字段携带数据,目标Ability可通过onCreate()want参数获取。
  • 权限要求:若跨应用跳转,需在module.json5中申请ohos.permission.START_ABILITIES_FROM_BACKGROUND权限。

此方法适用于同设备或跨设备的UIAbility跳转,代码简洁且符合鸿蒙Next规范。

回到顶部