拉起应用实现不同应用间的协同。若需要被外部应用拉起需要被拉起的应用配置的export(visible)属性为true。

1.startAbility

使用startAbility核心是配置want。传入显式Want和隐式Want都能够实现拉起应用。

       1.1显式 Want(精准跳转)

         适用场景:跳转自己应用内的组件,或明确知道目标应用 / 组件的具体信息(包名 + 类名)。

 let want: Want = {
      bundleName: 'com.example.myapplication',
      abilityName: 'EntryAbility'
    };

    try {
      this.context.startAbility(want, (err: BusinessError) => {
        if (err.code) {
          // 处理业务逻辑错误
          console.error(`startAbility failed, code is ${err.code}, message is ${err.message}`);
          return;
        }
        // 执行正常业务
        console.info('startAbility succeed');
      });
    } catch (err) {
      // 处理入参错误异常
      let code = (err as BusinessError).code;
      let message = (err as BusinessError).message;
      console.error(`startAbility failed, code is ${code}, message is ${message}`);
    }
  }

    1.2 隐式 Want(模糊匹配)

     适用场景:跨应用调用(如打开浏览器、发送邮件),不知道具体组件信息,只知道要完成的 “动作”。需要在目标应用的module.json5中配置相关skill,以视频文件拉起为例:

目标应用配置:


  "module": {
    "name": "entry",
    "abilities": [
      {
        "skills": [
          {
            "actions": [
              "ohos.want.action.viewData"
            ],
            "uris": [
              {
                "scheme": "file",
                "type": "video/*",
                "linkFeature": "FileOpen"
              }
            ]
          }
        ]
      },
    ],
  }

     发起端调用:

let want: Want = {
      action: 'ohos.want.action.viewData',
      uri: uri,
      type: 'video/*',
      flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
      parameters: {
        'uri': uri,
        'name': name
      }
    };

此处调用仅want配置差异,后续调用和显式 Want相同。

2.使用aa命令

aa start -a ability名 -b bundle名 

使用此命令可以拉起应用对应的ability

如需传递参数

--pi

可选参数,整型类型键值对。

说明: 仅支持无符号整型值。

--pb 可选参数,布尔类型键值对。
--ps

可选参数,字符串类型键值对。

说明: 字符串值不能以中划线“-”开头。

--psn 可选参数,空字符串关键字。
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐