鸿蒙Next app内如何通过schema打开其他应用

在鸿蒙Next开发中,如何通过schema实现应用间的跳转?比如在App A中需要打开App B的特定页面,应该怎么配置schema和相关代码?能否提供具体的示例和注意事项?

2 回复

鸿蒙Next里用schema调起其他应用?简单!用featureAbility.startAbility(),传个带actionuri的Intent就行。比如:

let intent = {
    action: "action.system.detail",
    uri: "harmony://com.example.app/path?key=value"
};
featureAbility.startAbility(intent);

记得先在config.json里声明要用的schema权限,不然系统会一脸懵:“这货想干啥?” 😏

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


在鸿蒙Next(HarmonyOS NEXT)中,可以通过URI Scheme(统一资源标识符方案) 打开其他应用。以下是具体步骤和示例代码:

实现步骤

  1. 确认目标应用的Schema
    目标应用需在module.json5中声明skillsentities,并定义自己的URI Scheme(如 "scheme": "myapp")。

  2. 使用UIAbilityContext启动应用
    通过startAbility方法,传入包含目标应用Schema的Want对象。

示例代码

import { UIAbilityContext, common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 在UIAbility或页面中调用
let context: UIAbilityContext = ...; // 获取当前UIAbility的Context

let want: common.Want = {
  uri: 'myapp://path/to/page'  // 替换为目标应用的Schema和路径
};

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

参数说明

  • uri格式{scheme}://{host}/{path}?{params}
    例如:myapp://detail?id=123
    (具体格式需根据目标应用的定义调整)

注意事项

  1. 目标应用必须已安装且声明了对应的Schema。
  2. 若目标应用未响应,请检查Schema是否匹配或路径是否正确。
  3. 鸿蒙Next的API基于ArkTS,需在DevEco Studio中配置相关权限(如无特殊权限要求,通常无需额外声明)。

通过以上方法,可实现在鸿蒙Next中跨应用跳转。

回到顶部