鸿蒙Next如何配置scheme实现其他app打开

在鸿蒙Next开发中,如何配置scheme实现其他应用唤起我的应用?具体步骤是什么?需要在manifest.json里声明哪些参数?有没有完整的示例代码可以参考?调试时出现scheme不生效的情况该如何排查?

2 回复

鸿蒙Next配置scheme?简单!在module.json5里加个"skills"标签,填好scheme协议名,比如"myapp://"。其他App调用时,系统就会问用户:“开吗?”用户一点,你的App就蹦出来了!记得测试时别把自己蹦晕了~

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


在鸿蒙Next(HarmonyOS NEXT)中,可以通过配置scheme实现其他应用打开你的应用。以下是详细步骤和示例代码:

1. 配置应用信息

module.json5 文件中,添加 scheme 配置:

{
  "module": {
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "launchType": "standard",
        "metadata": [
          {
            "name": "ohos.ability.uri",
            "value": "myapp"
          }
        ]
      }
    ]
  }
}

其中 "value": "myapp" 定义你的应用 scheme(例如 myapp://)。

2. 处理外部调用

在目标 Ability 的 onCreateonNewWant 中解析 URI:

import UIAbility from '@ohos.app.ability.UIAbility';
import Want from '@ohos.app.ability.Want';

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    // 获取传入的 URI
    let uri = want.uri;
    if (uri) {
      console.log('Received URI:', uri); // 示例:myapp://detail?id=123
      // 解析参数并跳转到对应页面
    }
  }
}

3. 其他应用调用方式

在其他应用中,通过 startAbility 触发:

let want = {
  action: 'ohos.want.action.viewData',
  entities: ['entity.system.browsable'],
  uri: 'myapp://detail?id=123' // 替换为你的 scheme 和参数
};
try {
  await context.startAbility(want);
} catch (err) {
  console.error('启动失败:', err);
}

注意事项:

  • Scheme 命名:建议使用英文小写,避免与系统应用冲突。
  • 参数传递:可通过 URI 的 query 参数(如 ?key=value)传递数据。
  • 权限:确保调用方和应用均已声明必要权限。

通过以上配置,即可实现应用间通过 scheme 相互调用的功能。

回到顶部