桌面快捷方式开发实践 原创

一路向北545
发布于 2024-12-11 18:41
浏览
0收藏

一、介绍

当应用的功能日益复杂时,用户在应用里寻觅某个功能的操作流程也越发冗长。若想优化用户体验,不妨为应用里那些常用功能设立桌面快捷方式,从而达成快速开启应用、一键抵达特定功能之类的效果。就像相机应用的 “快速拍照”、便签应用的 “新建便签” 以及地图应用的常用地点导航等功能的快捷途径,用户借助这些快捷方式能够迅速切入特定功能页面,这不但能大幅提升操作效率,而且会加深用户对应用的依赖程度。运用快捷方式,还能够达成个性化定制的诉求,构建多个快捷方式,以此契合个性化的工作模式与操作习惯。

桌面快捷方式开发实践-鸿蒙开发者社区


二、工程目录

├──module.json5                                        //配置文件
├──entry/src/main/ets                                   // 代码区
│  ├──entryability
│  │  └──EntryAbility.ets                               // 程序入口类
│  ├──entrybackupability
│  │  └──EntryBackupAbility.ets
│  └──pages                              
│     ├──Index.ets                                  // 主页
│     ├──SecondPage.ets                             // 跳转目标页
│                 
└──entry/src/main/resources                             // 应用资源目录
                     └──base
                         └──profile
                             └──shortcuts_config.json  //快捷方式配置文件

三、使用说明

长安应用图标,即可出现快捷方式列表。点击对应图标,即可快速打开应用中对应的页面。或者将快捷方式图标长按拖动到桌面,然后点击打开对应页面。

四、实现流程

给应用添加的导航快捷方式需要进行如下步骤:

(1)在resources/base/profile下的main_pages.json文件中添加对应快捷方式页面的路由信息。

{
  "src": [
    "pages/Index",
    "pages/SecondPage"//作为快捷方式跳转目标页
  ]
}


(2)/resources/base/profile/目录下创建名为shortcuts_config.json的文件

shortcutId表示快捷方式的ID、label表示快捷方式对外显示的文字描述信息、icon表示快捷方式的图标、wants中则是快捷方式内定义的目标wants信息集合。通过wants中的parameters参数来指定拉起快捷方式时的自定义数据。


{
  "shortcuts": [
    {
      "shortcutId": "second_id",
      "label": "$string:label",
      "icon": "$media:app_icon",
      "wants": [
        {
          "bundleName": "com.example.shortcutdemo",
          "moduleName": "entry",
          "abilityName": "EntryAbility",
          "parameters": {
            "shortCutKey": "SecondPage"
          }
        }
      ]
    }
  ]
}

(3)在module.json5配置文件中的abilities标签下的metadata中设置resource属性值为$profile:shortcuts_config,指定应用的快捷方式配置文件,即使用shortcuts_config.json文件中的shortcuts配置。


{
    "abilities": [
        "metadata": [
               {
                "name": "ohos.ability.shortcuts",
                "resource": "$profile:shortcuts_config"
                  }
                       ]
        ]
}


(4)在EntryAbility.ets文件中定义跳转到指定页面的方法。

在步骤2中,通过parameters参数来指定了拉起快捷方式时的自定义数据 ,如"shortCutKey": "SecondPage"。此时,可以通过获取want中的parameters里的shortCutKey来判断用户使用了哪种快捷方式,从而进行对应的页面跳转。

需要注意的是如果app不在后台,那么会走onCreate()方法,如果app在后台,不会再走onCreate()方法而是回调onNewWant()方法。所以对这两种情况都要进行处理。


EntryAbility.ets

onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  if ((want.parameters)) {
    let shortCutKey = want.parameters?.shortCutKey;
    if (shortCutKey === "SecondPage") {
      router.pushUrl({
        url: "pages/SecondPage"
      })
    }
  }
}
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  if ((want.parameters)) {
    let shortCutKey = want.parameters?.shortCutKey;
    if (shortCutKey === "SecondPage") {
      this.path = "pages/SecondPage"
    }
  }
}
onWindowStageCreate(windowStage: window.WindowStage): void {
  windowStage.loadContent(this.path, (err) => {
  });
}

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
收藏
回复
举报
回复
    相关推荐