鸿蒙Next如何唤起其他应用

在鸿蒙Next系统中,如何通过代码实现唤起其他应用?比如我想从当前应用跳转到微信或者浏览器,需要调用哪些API?具体步骤和注意事项有哪些?

2 回复

鸿蒙Next唤起其他应用?简单!用wantstartAbility就行,就像喊朋友吃饭:“嘿,支付宝,打开收款码!”系统自动匹配。记得加权限,别乱喊,不然手机会装死。代码三行搞定,比点外卖还快!

更多关于鸿蒙Next如何唤起其他应用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,您可以通过 显式 Intent隐式 Intent 来唤起其他应用。以下是具体方法和示例代码:

1. 显式 Intent(明确指定目标应用)

适用于已知目标应用的包名和Ability名称。

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

let want: Want = {
  bundleName: "目标应用的Bundle名称", // 例如:"com.example.app"
  abilityName: "目标Ability名称" // 例如:"MainAbility"
};

try {
  let context = ... // 获取当前UIAbility的Context
  context.startAbility(want).then(() => {
    console.log("唤起应用成功");
  }).catch((error: BusinessError) => {
    console.error("唤起失败,错误码: " + error.code);
  });
} catch (error) {
  console.error("捕获异常: " + error);
}

2. 隐式 Intent(通过动作和参数匹配)

适用于根据操作类型(如打开网页、拨打电话)唤起应用。

let want: Want = {
  action: "ohos.want.action.viewData", // 系统预定义动作
  entities: ["entity.system.browsable"],
  uri: "https://example.com" // 要打开的网页URL
};

// 其余代码与显式Intent相同
context.startAbility(want).then(...)

常用系统动作示例:

  • 打开网页action: "ohos.want.action.viewData", uri: "https://..."
  • 拨打电话action: "ohos.want.action.dial", uri: "tel:10086"
  • 发送短信action: "ohos.want.action.sendData", uri: "sms:10086"

注意事项:

  1. 权限配置:部分操作需在 module.json5 中声明权限,例如网络访问:
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
    
  2. 目标应用需存在:隐式Intent需确保系统中有能处理该Intent的应用。
  3. 错误处理:始终捕获 startAbility 可能抛出的异常。

通过以上方法,您可以灵活地在鸿蒙Next中实现应用间的唤起功能。

回到顶部