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

更多关于HarmonyOS鸿蒙Next中如何通过配置添加应用快捷方式?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
首先整体逻辑很简单,通过一个配置,再加点儿代码就可实现这样看似较为复杂的效果。
一、新建配置文件:
通过在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和媒体资源文件中定义了label和icon引用的资源。
5. 在Ability中处理参数
在目标Ability的onCreate或onNewWant生命周期回调中,可以通过want.parameters获取快捷方式传递的参数,以区分不同的入口并执行相应逻辑(如直接跳转到扫码界面)。
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
let action = want.parameters?.['key_extra_action'];
if (action === 'scan') {
// 执行扫码相关逻辑
} else if (action === 'pay') {
// 执行支付相关逻辑
}
}
注意事项
- 静态快捷方式数量有限制,请查阅当前版本的官方文档。
- 图标和文本需符合设计规范,确保用户体验。
- 配置完成后,需重新编译安装应用。快捷方式会在应用图标长按时显示在服务卡片列表中。
通过以上配置,即可实现与微信类似的、通过长按图标弹出的静态应用快捷方式。

