鸿蒙Next中queryschemes如何配置和使用

在鸿蒙Next中配置和使用queryschemes时遇到了一些问题,想请教大家具体的实现方法。

  1. queryschemes的配置文件中需要包含哪些必要字段?是否有标准模板可以参考?
  2. 如何正确声明和注册queryschemes,确保应用能够正确响应并处理对应的URI?
  3. 在代码中应该如何解析和处理queryschemes传递的参数?是否有最佳实践或示例代码?
  4. 调试时发现某些queryschemes无法正常触发,应该如何排查和解决这类问题?

希望有经验的朋友能分享一下具体的步骤和注意事项,谢谢!

2 回复

在鸿蒙Next中,配置queryschemes只需在module.json5里定义abilitiesskills字段,添加entitiesactions。使用时通过featureAbility.startAbility()触发,系统会自动匹配对应的应用。简单说就是:配好技能表,系统帮你喊人干活!

更多关于鸿蒙Next中queryschemes如何配置和使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,queryschemes 用于配置应用支持的外部 URI 协议,允许其他应用通过特定 URL 启动你的应用。以下是配置和使用的步骤:

1. 配置 queryschemes

module.json5 文件的 abilities 中,为需要响应 URI 的 Ability 添加 schemes 配置:

{
  "module": {
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        "launchType": "standard",
        "metadata": [
          {
            "name": "ohos.ability.queryschemes",
            "resource": "$profile:queryschemes"
          }
        ]
      }
    ]
  }
}

创建 resources/base/profile/queryschemes.json 文件,定义支持的协议:

{
  "uriSchemes": [
    {
      "scheme": "myapp",  // 自定义协议名,例如 myapp://
      "host": "example",  // 可选,指定主机
      "port": "8080",     // 可选,指定端口
      "path": "/detail",  // 可选,指定路径
      "type": "intent"
    }
  ]
}

2. 处理 URI 请求

在 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: LaunchParam) {
    // 获取传入的 URI
    let uri = want.uri;
    if (uri) {
      console.log('Received URI:', uri);
      // 解析参数,例如 myapp://example/detail?id=123
      // 执行跳转逻辑或数据处理
    }
  }
}

3. 从外部调用应用

其他应用可通过 startAbility 启动你的应用:

import common from '@ohos.app.ability.common';

let context = ...; // 获取上下文
let want = {
  uri: 'myapp://example/detail?id=123'  // 匹配配置的 queryscheme
};
context.startAbility(want).then(() => {
  console.log('启动成功');
}).catch((err) => {
  console.error('启动失败:', err);
});

注意事项

  • 协议名唯一:避免与系统或其他应用冲突。
  • 参数传递:可通过 URI 的 query 参数(如 ?id=123)传递数据。
  • 安全校验:验证 URI 的合法性和参数格式。

通过以上步骤,即可在鸿蒙Next中配置和使用 queryschemes 实现应用间跳转。

回到顶部