【HarmonyOS 5】桌面快捷方式功能实现详解
在HarmonyOS 5中实现桌面快捷方式主要依靠静态配置的方式。开发者通过预先定义好配置文件让系统在应用安装后就能为用户提供长按图标快速访问特定功能的入口。这种方式对用户最直接也是目前官方推荐的主要实现路径。简单来说这个功能可以拆解为配置、跳转和拉起三个核心环节。核心配置文件定义快捷方式的“样子”首先需要在项目的resources/base/profile/目录下创建一个名为shortcuts_config.json的配置文件。它用JSON格式描述了每个快捷方式的唯一ID、显示的文字、图标以及最重要的——点击后要跳转到哪里。1.shortcuts_config.json示例json{ shortcuts: [ { shortcutId: id_go_company, label: $string:go_company, icon: $media:icon_company, wants: [ { bundleName: com.example.desktopshortcut, moduleName: entry, abilityName: EntryAbility, parameters: { page: GoCompany } } ] }, { shortcutId: id_go_house, label: $string:go_home, icon: $media:icon_home, wants: [ { bundleName: com.example.desktopshortcut, moduleName: entry, abilityName: EntryAbility, parameters: { page: GoHouse } } ] } ] }shortcutId每个快捷方式的唯一标识符长度不超过63字节。labelicon用户直接看到的名称和图标建议使用资源索引如$string:xxx以方便多语言适配。wants这里定义了点击快捷方式后系统要执行的动作。parameters字段是开发者自定义的用于告诉应用用户点击的是哪个快捷方式下文会详细说明如何接收它。2. 在module.json5中关联配置定义好快捷方式后需要在应用的module.json5文件中通过metadata字段告知系统这个配置文件的存在。json{ 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 } ] } ] } }这里的name字段必须是ohos.ability.shortcuts这是系统识别快捷方式配置的固定标识。应用内跳转处理用户的点击配置好文件后最关键的一步是在EntryAbility.ets中接收并处理用户通过快捷方式传来的参数。这个逻辑主要写在onNewWant生命周期回调里。EntryAbility.ets核心逻辑typescriptimport router from ohos.router; import { Ability, Want, AbilityConstant } from kit.AbilityKit; import { hilog } from kit.PerformanceAnalysisKit; export default class EntryAbility extends Ability { // ... // 当应用已存在用户再次通过快捷方式点击时触发 onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void { // 1. 从want中取出自定义参数这里的 page 必须和配置文件中的key一致 const page want.parameters?.page; // 2. 安全校验避免参数缺失导致崩溃 if (page typeof page string) { hilog.info(0x0000, Shortcut, Navigating to: ${page}); // 3. 执行页面跳转 router.pushUrl({ url: pages/${page}, }).catch((err) { hilog.error(0x0000, Shortcut, Push url failed, code: ${err.code}); }); } else { // 处理无参数或参数无效的情况比如跳转默认首页 router.replaceUrl({ url: pages/Index }); } } }关键点说明两种启动场景onCreate在应用初次启动时触发而onNewWant在应用已存在、再次被唤起时触发。快捷方式通常需要处理的是后者。参数一致代码中want.parameters?.page里的page必须与shortcuts_config.json中parameters里定义的键名完全一致。动态跳转通过router.pushUrl可以实现根据参数动态跳转到不同的页面如GoCompany、GoHouse。确保这些目标页面已用Entry装饰并在路由表中注册过。⚠️ 注意事项与限制数量限制一个应用最多只能配置4个静态快捷方式。目标页面快捷方式只能拉起UIAbility入口页面即应用的主Ability不能直接拉起普通页面。所以需要在EntryAbility中做中转跳转。用户控制快捷方式的添加和移除最终决定权在于用户。应用无法强制将快捷方式固定在用户的桌面上只能提供入口。总结与官方资源总的来说实现静态快捷方式是一个“配置三板斧”的过程定义在shortcuts_config.json中定义快捷方式的外观和目标。关联在module.json5中通过metadata关联配置文件。处理在EntryAbility.ets的onNewWant中解析参数并执行跳转。官方提供的示例项目DesktopShortcut是一个很好的学习起点你可以直接参考其完整代码实现。

相关新闻

AI大模型入门指南:提示词Prompt工程详解

AI大模型入门指南:提示词Prompt工程详解

什么是提示词工程?简单来说,提示词(Prompt)就是你输入给AI的内容,可以是一个问题、一段描述,甚至是一段代码。而提示词工程,则是设计、优化、构建高质量提示词的系统化过程。这个过程的本质&…

2026/7/22 18:01:49 阅读更多 →
DeepMind把AI用到历史研究上 还不用写代码

DeepMind把AI用到历史研究上 还不用写代码

Google DeepMind最近展示了一个叫"预测过去"(Predicting the Past)的AI能力,目的是用AI模型和复杂工作流推进历史研究,而且强调不需要写代码。看了下他们的介绍,基本的思路是用AI来分析历史文献和数据&#…

2026/7/21 14:31:41 阅读更多 →
TMS320F28003x CMPSS数字滤波器原理、配置与校准实战

TMS320F28003x CMPSS数字滤波器原理、配置与校准实战

1. 项目概述与核心价值 在电机驱动、数字电源或者任何需要高精度实时保护的嵌入式控制系统中,我们总会遇到一个让人头疼的问题:来自传感器或比较器的模拟信号,常常伴随着各种毛刺和噪声。这些瞬间的干扰如果直接用来触发保护或者控制PWM&…

2026/7/23 5:08:14 阅读更多 →

最新新闻

柑橘病害YOLO检测数据集构建与模型优化实战

柑橘病害YOLO检测数据集构建与模型优化实战

1. 项目背景与核心价值 柑橘病害检测数据集(YOLO格式)是农业AI领域的重要基础设施资源。作为国内首个公开可用的柑橘类作物病害标准化检测数据集,它解决了传统农业病害识别中样本不足、标注不规范两大痛点。我在参与某省智慧农业项目时&#…

2026/7/24 9:09:00 阅读更多 →
ArkUI @Builder 传参不刷新怎么办:中式美食同类卡片插槽怎么分清值、引用和回调

ArkUI @Builder 传参不刷新怎么办:中式美食同类卡片插槽怎么分清值、引用和回调

写这段代码前,我主要对照了这几个官方章节: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-custom-components-freezehttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-v1-v2-migration-inner-componentht…

2026/7/24 9:09:00 阅读更多 →
嵌入式硬件事件管理器:原理、配置与实战应用

嵌入式硬件事件管理器:原理、配置与实战应用

1. 项目概述:为什么我们需要硬件事件管理器? 在嵌入式开发里,尤其是对实时性、功耗和CPU效率有要求的场景,我们总在追求一个目标:让硬件自己“动”起来。想象一下,你正在设计一个电池供电的传感器节点&…

2026/7/24 9:09:00 阅读更多 →
GBA.js与Wasm模拟器对比:Web复古游戏实现路径深度解析

GBA.js与Wasm模拟器对比:Web复古游戏实现路径深度解析

1. 项目概述:为什么要在Web上“复活”GBA? 十几年前,谁能想到我们能在浏览器里直接玩《口袋妖怪 红宝石》或者《火焰纹章》?那时候想重温GBA游戏,要么翻出落灰的实体机和卡带,要么在电脑上折腾各种本地模拟…

2026/7/24 9:09:00 阅读更多 →
AI无像素空间感知:基于文本的环境理解技术

AI无像素空间感知:基于文本的环境理解技术

1. 项目概述:当AI学会"脑补"空间关系 在计算机视觉领域,我们早已习惯让AI通过像素阵列理解世界。但人类认知的奇妙之处在于——即使没有视觉输入,仅凭"客厅沙发左侧三米处有个白色茶几"这样的文本描述,我们就…

2026/7/24 9:09:00 阅读更多 →
三大主流大模型API调用实战与优化指南

三大主流大模型API调用实战与优化指南

1. 大模型API调用实战指南 最近在开发一个智能写作助手时,需要同时对接多个主流大语言模型的API。经过两周的踩坑和调试,终于实现了通过API Key稳定调用DeepSeek、GLM和OpenAI三大平台的经验。分享下我的完整实现方案和避坑心得。 2. 核心工具选型与准…

2026/7/24 9:08:00 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻