0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【HarmonyOS 5】桌面快捷方式功能实现详解

HarmonyOS解决方案 来源:HarmonyOS解决方案 作者:HarmonyOS解决方案 2025-06-21 16:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

HarmonyOS 5】桌面快捷方式功能实现详解

##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财#

一、前言

在移动应用开发中,如何让用户快速触达核心功能,是目前很常见的功能之一。

鸿蒙系统提供的**桌面快捷方式(Shortcuts)**功能,允许开发者为应用内常用功能创建直达入口,用户通过长按应用图标即可快速启动特定功能,大幅减少操作层级。

本文将结合地图导航场景,详细解析鸿蒙快捷方式的实现原理与开发流程。结合华为官方开源示例 DesktopShortcut 展开,该示例基于HarmonyOS 5.0实现,完整演示了地图导航场景的快捷方式开发流程。

二、需求分析与示例工程介绍

以地图应用为例,用户日常高频使用“回家”“去公司”等导航功能。传统流程需先打开应用、搜索目的地、再启动导航。通过快捷方式,可实现:

  1. 长按应用图标 ,在快捷方式列表中直接点击“回家”或“去公司”;
  2. 拖动快捷方式到桌面 ,通过独立图标一键启动导航。
    image.png

工程目录介绍

├── entry/src/main/ets                  
│  ├── entryability                         
│  │  └── EntryAbility.ets                  // 核心逻辑:处理快捷方式参数并跳转页面
│  └── pages                                
│     ├── GoCompany.ets                     // 公司导航页面(@Entry装饰)
│     ├── GoHouse.ets                       // 回家导航页面(@Entry装饰)
│     └── Index.ets                         // 应用首页
├── entry/src/main/resources                
│  └── base/profile                         
│     └── shortcuts_config.json             // 快捷方式元数据配置
└── module.json5                             // 模块配置文件,关联快捷方式

三、快捷方式功能实现步骤

1、 核心配置文件

(1)shortcuts_config.json :定义快捷方式的元数据,包括ID、名称、图标及目标跳转信息。

{
  "shortcuts": [
    {
      "shortcutId": "id_go_company",
      "label": "$string:go_company",        // 对应resources/base/element/string.json中的字符串资源
      "icon": "$media:icon_company",        // 对应resources/base/media目录下的图标文件
      "wants": [
        {
          "bundleName": "com.example.desktopshortcut", // 应用包名(需与module.json5一致)
          "moduleName": "entry",                        // 模块名(固定为entry)
          "abilityName": "EntryAbility",               // 目标Ability(入口Ability)
          "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" } //  `parameters`键名可自定义(示例中使用`page`而非前文的`shortCutKey`),需与代码逻辑保持一致。
        }
      ]
    }
  ]
}

(2)module.json5 :声明快捷方式配置文件的引用,关联至应用模块。

{
  "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" // 引用profile目录下的配置文件
          }
        ]
      }
    ]
  }
}

(3)关键字段说明

字段说明
shortcutId唯一标识(长度≤63字节),如id_company。
label显示名称(支持资源索引),如$string:Go_to_the_Company。
icon图标资源索引,如$media:company。
wants目标跳转信息,包含包名、模块名、Ability名称及自定义参数(parameters)。

2、快捷入口跳转逻辑

import router from '@ohos.router';

export default class EntryAbility extends Ability {
  private context: UIAbilityContext | undefined;

  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    super.onCreate(want, launchParam);
    this.context = this.getContext();
    // 首次启动时加载首页
    router.pushUrl({
      url: 'pages/Index',
      context: this.context
    });
  }

  onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam) {
    const page = want.parameters?.page; // 提取快捷方式传递的参数
    if (page && this.context) {
      router.pushUrl({
        url: `pages/${page}`, // 动态拼接页面路径
        context: this.context
      });
    }
  }
}

注意

  1. 快捷方式数量 :仅支持跳转至UIAbility入口页面,最多配置4个。
  2. 参数校验
    在onNewWant中增加参数非空校验,避免因快捷方式参数缺失导致应用崩溃:
if (!page || !this.context) {
  hilog.error(0x0000, 'Shortcut', 'Invalid parameters or context');
  return;
}
  1. 卡片 :可展示动态内容,支持跳转至非入口页面。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙
    +关注

    关注

    60

    文章

    2863

    浏览量

    45368
  • HarmonyOS
    +关注

    关注

    80

    文章

    2147

    浏览量

    35594
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HarmonyOS 5】鸿蒙应用隐私保护详解

    HarmonyOS 5】鸿蒙应用隐私保护详解 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、前言 在今天这个手机不离手的时代,我们每天
    的头像 发表于 07-11 18:30 972次阅读

    HarmonyOS 5】鸿蒙中进度条的使用详解

    HarmonyOS 5】鸿蒙中进度条的使用详解 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、Ha
    的头像 发表于 07-11 18:26 746次阅读
    【<b class='flag-5'>HarmonyOS</b> <b class='flag-5'>5</b>】鸿蒙中进度条的使用<b class='flag-5'>详解</b>

    HarmonyOS 5】鸿蒙星闪NearLink详解

    HarmonyOS 5】鸿蒙星闪NearLink详解 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、前言 鸿蒙星闪NearLink K
    的头像 发表于 07-11 18:24 1515次阅读
    【<b class='flag-5'>HarmonyOS</b> <b class='flag-5'>5</b>】鸿蒙星闪NearLink<b class='flag-5'>详解</b>

    HarmonyOS 5】鸿蒙mPaaS详解

    HarmonyOS 5】鸿蒙mPaaS详解 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、mPaaS是什么? mPaaS 是 Mobi
    的头像 发表于 07-11 18:23 683次阅读
    【<b class='flag-5'>HarmonyOS</b> <b class='flag-5'>5</b>】鸿蒙mPaaS<b class='flag-5'>详解</b>

    HarmonyOS 5】鸿蒙中的UIAbility详解(二)

    HarmonyOS 5】鸿蒙中的UIAbility详解(二) ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、前言 今天我们继续深入讲解
    的头像 发表于 07-11 18:17 702次阅读
    【<b class='flag-5'>HarmonyOS</b> <b class='flag-5'>5</b>】鸿蒙中的UIAbility<b class='flag-5'>详解</b>(二)

    HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能

    HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能 ##鸿蒙开发能力 ##HarmonyOS SDK应用服
    的头像 发表于 07-11 18:16 887次阅读
    【<b class='flag-5'>HarmonyOS</b> <b class='flag-5'>5</b>】鸿蒙应用<b class='flag-5'>实现</b>发票扫描、文档扫描输出PDF图片或者表格的<b class='flag-5'>功能</b>

    如何实现桌面快捷方式【2】--ArkTS开发

    主要目的。大家其实一直都忽略了一种入口方式,即快捷入口。今天我用了一个下午为我的“真律法律咨询平台”app新增了这个功能,中间踩了不少的坑……为了方便大家的开发,我来分享一下具体的开发流程 示例 当长按App
    发表于 06-30 19:14

    如何实现桌面快捷方式【1】--ArkTS开发

    的图标时,除了基本的“添加应用锁”和“卸载”外,还可以弹出其他的快捷入口,更厉害的是,这几个快捷入口,是可以拖出来的,会形成一个单独的类似“app”的样式,也可以点击。 实现方式 相关
    发表于 06-30 19:03

    HarmonyOS 5】应用更新功能详解

    与迭代需求的优选方案。这类弹窗主要用于向用户推送新版本更新通知,而在引导用户完成更新操作的实现层面,HarmonyOS 提供了完善的应用市场能力支撑,例如本文所介绍的 updateManager(更新功能
    发表于 06-22 18:44

    HarmonyOS 5】VisionKit人脸活体检测详解

    HarmonyOS 5】VisionKit人脸活体检测详解 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、VisionKit人脸活体
    的头像 发表于 06-21 11:52 636次阅读
    【<b class='flag-5'>HarmonyOS</b> <b class='flag-5'>5</b>】VisionKit人脸活体检测<b class='flag-5'>详解</b>

    HarmonyOS 5 makeObserved接口详解

    HarmonyOS 5】makeObserved接口详解 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、makeObserved接口
    的头像 发表于 06-16 17:58 524次阅读

    HarmonyOS 5】鸿蒙中的UIAbility详解(三)

    HarmonyOS 5】鸿蒙中的UIAbility详解(三) ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、前言 本文是鸿蒙中的UIA
    的头像 发表于 06-14 22:32 496次阅读

    HarmonyOS 5】鸿蒙CodeGenie AI辅助编程工具详解

    HarmonyOS 5】鸿蒙CodeGenie AI辅助编程工具详解 一、前言 1、CodeGenie是什么?CodeGenie (代码精灵)作为鸿蒙DevEco IDE自带的AI辅助编码工具
    发表于 06-11 16:34

    HarmonyOS5云服务技术分享--认证文档问题

    文「集成SDK」章节)。 初始化SDK并添加网络权限。 ​​5. 实现账号登录认证​​ ​​支持方式​​: ​​标准登录​​:手机、邮箱、华为账号、自有账号、匿名账号。 ​​高级功能
    发表于 05-22 13:20

    AD软件快捷键设置和导入方法

    鼠标放在上图中的“交互式布线”上,然后按下Ctrl键,同时点击鼠标左键,就出现下图所示的对话框,在这里就可以修改走线命令的快捷键了。 接着,选择快捷方式下面的“主要的”右侧,按下小键盘的5,就看
    发表于 03-26 10:03