HarmonyOS鸿蒙Next中如何通过配置添加应用快捷方式?

HarmonyOS鸿蒙Next中如何通过配置添加应用快捷方式? 如何通过配置添加应用快捷方式?模仿微信如下的截图效果:


更多关于HarmonyOS鸿蒙Next中如何通过配置添加应用快捷方式?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

首先整体逻辑很简单,通过一个配置,再加点儿代码就可实现这样看似较为复杂的效果。

一、新建配置文件:

通过在resources/base/profile/ 目录下新建配置shortcuts_config.json文件:

{
  "shortcuts": [
    {
      "shortcutId": "id_company",
      "label": "$string:Go_to_the_Company",
      "icon": "$media:company",
      "wants": [
        {
          "bundleName": "com.example.desktopshortcuts",
          "moduleName": "entry",
          "abilityName": "EntryAbility",
          "parameters": {
            "shortCutKey": "CompanyPage"
          }
        }
      ]
    }
  ]
}

这个步骤相当于配置我们应用的快捷入口,定制化添加一些参数:

shortcutId:唯一标识,不超过 63 字节

label:显示文本(支持字符串或资源索引)

icon:图标资源索引

wants:跳转配置(包名、模块名、组件名、自定义参数)这个字段主要是为了后续点击快捷入口之后,应用启动跳转到目标页面,携带一些信息进行逻辑处理。

二、关联配置文件:

在 module.json5 中关联配置,在 module.json5 的 abilities 标签下添加 metadata 配置,指定快捷方式配置文件路径,让系统识别快捷方式:

{
  "module": {
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "skills": [
          {
            "entities": ["entity.system.home"],
            "actions": ["ohos.want.action.home"]
          }
        ],
        "metadata": [
          {
            "name": "ohos.ability.shortcuts",
            "resource": "$profile:shortcuts_config"
          }
        ]
      }
    ]
  }
}

三、代码处理跳转目标页面的逻辑:

主要的处理逻辑,就是从冷热启动的回调中,拿到want信息,获取我们在配置文件中,配置的wants,进行目标页面的跳转。以下为参考:

1、保存并传递 Want 参数

// 冷启动时保存参数
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
  if (want?.parameters?.shortCutKey) {
    AppStorage.setOrCreate('want', want);
  }
}

// 热启动时更新参数
onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  if (want?.parameters?.shortCutKey) {
    AppStorage.setOrCreate('want', want);
  }
}

2、在主页面的 onPageShow 方法中,读取 AppStorage 中保存的 want 参数,调用跳转方法完成快捷方式响应:

onPageShow(): void {
  if (AppStorage.has('want')) {
    let want: Want | undefined = AppStorage.get('want');
    if (want) {
      this.goToSpecifyPage(want);
      AppStorage.delete('want'); // 跳转后清除参数,避免重复触发
    }
  }
}

更多关于HarmonyOS鸿蒙Next中如何通过配置添加应用快捷方式?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


学习了,

注意事项

(1)静态快捷方式最多支持配置 4 个,仅能跳转至 UIAbility 入口页面,无法直接跳转到非入口页面。 (2)多 HAP 包场景无需额外配置,所有操作均在 entry 文件夹下完成。

在HarmonyOS Next中,通过配置添加应用快捷方式需在module.json5配置文件的abilities字段下,为对应Ability添加shortcuts标签。在shortcuts数组中定义快捷方式,每个快捷方式需指定label(显示名称)、icon(图标资源)和intents(目标Ability与参数)。系统安装应用后,长按应用图标即可显示配置的快捷方式。

在HarmonyOS Next中,可以通过在应用的resources/base/profile/目录下配置shortcuts.json文件来为应用添加快捷方式。这种方式是静态配置,适用于在应用安装时即确定的快捷入口。

以下是实现类似微信快捷方式的核心步骤和配置示例:

1. 创建配置文件

resources/base/profile/目录下创建shortcuts.json文件。如果该目录不存在,请先创建。

2. 编辑配置文件内容

shortcuts.json文件需遵循特定格式,一个典型的配置示例如下:

{
  "app": {
    "shortcuts": [
      {
        "shortcutId": "shortcut_scan",
        "label": "$string:shortcut_scan_label",
        "icon": "$media:shortcut_scan_icon",
        "intents": [
          {
            "targetBundle": "你的应用包名",
            "targetClass": "你的Ability类全路径",
            "parameters": {
              "key_extra_action": "scan"
            }
          }
        ]
      },
      {
        "shortcutId": "shortcut_pay",
        "label": "$string:shortcut_pay_label",
        "icon": "$media:shortcut_pay_icon",
        "intents": [
          {
            "targetBundle": "你的应用包名",
            "targetClass": "你的Ability类全路径",
            "parameters": {
              "key_extra_action": "pay"
            }
          }
        ]
      }
    ]
  }
}

3. 参数说明

  • shortcutId: 快捷方式的唯一标识符,字符串类型。
  • label: 快捷方式显示的名称。建议引用resources/base/element/string.json中定义的字符串资源,如$string:shortcut_scan_label
  • icon: 快捷方式显示的图标。建议引用resources/base/media/目录下的图片资源,如$media:shortcut_scan_icon。图标需为PNG格式。
  • intents: 触发快捷方式时启动的Ability信息及要传递的参数。
    • targetBundle: 目标应用包名,通常为本应用包名。
    • targetClass: 要启动的Ability的全类名。
    • parameters: 可选,传递给目标Ability的自定义参数键值对,可在Ability中通过want.parameters获取。

4. 配置资源文件

确保在string.json和媒体资源文件中定义了labelicon引用的资源。

5. 在Ability中处理参数

在目标Ability的onCreateonNewWant生命周期回调中,可以通过want.parameters获取快捷方式传递的参数,以区分不同的入口并执行相应逻辑(如直接跳转到扫码界面)。

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  let action = want.parameters?.['key_extra_action'];
  if (action === 'scan') {
    // 执行扫码相关逻辑
  } else if (action === 'pay') {
    // 执行支付相关逻辑
  }
}

注意事项

  • 静态快捷方式数量有限制,请查阅当前版本的官方文档。
  • 图标和文本需符合设计规范,确保用户体验。
  • 配置完成后,需重新编译安装应用。快捷方式会在应用图标长按时显示在服务卡片列表中。

通过以上配置,即可实现与微信类似的、通过长按图标弹出的静态应用快捷方式。

回到顶部