鸿蒙Next如何打开其他app的scheme

在鸿蒙Next系统中,如何通过代码调用其他应用的scheme?具体需要哪些步骤和权限?有没有相关的示例代码可以参考?如果目标应用未安装或者scheme不匹配,系统会如何处理?

2 回复

鸿蒙Next里想调起其他App?试试这个“魔法咒语”:

Intent intent = new Intent();
intent.setUri("scheme://host/path"); // 填目标App的scheme
startAbility(intent, ...);

注意:对方App得提前在config.json里声明scheme权限,不然就像敲门没人应~ 记得抓包失败日志哦!

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


在鸿蒙Next(HarmonyOS NEXT)中,可以通过UIAbility的启动机制来打开其他应用的Scheme(类似URL Scheme)。以下是具体步骤和示例代码:

1. 配置目标应用的Scheme

目标应用需在module.json5中声明skills,包含entitiesactions,以支持被外部调用:

{
  "module": {
    "abilities": [
      {
        "name": "TargetAbility",
        "srcEntry": "./ets/targetability/TargetAbility.ets",
        "skills": [
          {
            "entities": ["entity.system.browsable"],
            "actions": ["action.system.view"],
            "uris": [
              {
                "scheme": "myapp",  // 自定义Scheme,如myapp://
                "host": "example"
              }
            ]
          }
        ]
      }
    ]
  }
}

2. 调用方使用startAbility打开Scheme

在调用方应用中,通过startAbility方法传入目标Scheme的Want参数:

import { common } from '[@kit](/user/kit).AbilityKit';
import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';

let want: common.Want = {
  uri: 'myapp://example/path?key=value'  // 完整Scheme路径
};

try {
  await context.startAbility(want);
  console.info('成功打开目标应用');
} catch (error) {
  console.error('打开失败,错误码:', (error as BusinessError).code);
}

3. 处理参数传递

目标应用在UIAbilityonCreateonNewWant中接收参数:

import { UIAbility } from '[@kit](/user/kit).AbilityKit';
import { hilog } from '[@kit](/user/kit).PerformanceAnalysisKit';

export default class TargetAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    let schemeUri = want.uri; // 获取完整Scheme
    let parameters = want.parameters; // 获取查询参数
    hilog.info(0x0000, 'Tag', '收到Scheme: %{public}s', schemeUri);
  }
}

注意事项:

  • 权限检查:确保调用方和应用均已声明必要权限(如ohos.permission.START_ABILITIES_FROM_BACKGROUND)。
  • Scheme匹配:目标应用的uris配置需与调用方传入的Scheme完全匹配(包括schemehost和可选的path)。
  • 错误处理:捕获startAbility可能抛出的异常(如应用未安装或Scheme不支持)。

通过以上步骤,即可实现在鸿蒙Next中通过Scheme跨应用启动功能。

回到顶部