HarmonyOS 鸿蒙Next 应用静态快捷启动

HarmonyOS 鸿蒙Next 应用静态快捷启动 最近项目上要求实现快捷打开,在这里说一下我摸索的步骤。

官网上的快捷启动文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/typical-scenario-configuration-V13

官网上的快捷启动示例代码:

https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-desktop-shortcuts-V5

下载官网的例子后发现只能热启动(应用在后台)才可以快捷打开,冷启动(杀掉进程启动)没反应,和需求有冲突。

我根据快捷启动示例代码的实现步骤做了一些改动,实现冷热启动。

  1. 根据示例代码配置对应的1.2.3条

  2. 配置完毕后:在EntryAbility.ets文件中定义跳转到指定页面的方法可以通过获取want中的parameters里的shortCutKey来判断用户使用了哪种快捷方式,从而进行对应的页面跳转。此处的shortCutKey在每次快捷启动时都会拿到赋值,此时可以用鸿蒙的监听方法先在EntryAbility.ets文件中将快捷方式存起来:

//在EntryAbility.ets文件中热启动
onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  this.quickOpen(want)
}
//冷启动
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  this.quickOpen(want)
}
quickOpen(funcAbilityWant:Want){
  if ((funcAbilityWant.parameters?.['shortCutKey'] ?? '') == 'quick_GJJ') {
//存起来快捷方式
    AppStorage.setOrCreate('openFast', 'quick_GJJ')
  } else if ((funcAbilityWant.parameters?.['shortCutKey'] ?? '') == 'quick_scan') {
    AppStorage.setOrCreate('openFast', 'quick_scan')
  } 
}

此处将快捷登录的方式存起来,之后在主界面监听跳转就可以了

//在index.ets中监听:本需求是主页面跳转,所以在主页面监听快捷方式
@StorageProp('openFast')@Watch('openQuick') openMode:string = ''
openQuick(){
  if (this.openMode == 'quick_GJJ') {
///在此处做跳转
  }
  if (this.openMode == 'quick_scan') {
///在此处做跳转
  }
  //快捷登录记录清除(保证下次热启动)
  AppStorage.setOrCreate(StorageConfig.openFast, '')
}

和官网直接在EntryAbility.ets跳转不同,我这边是监听后在主界面跳转,后续遇到问题欢迎讨论


更多关于HarmonyOS 鸿蒙Next 应用静态快捷启动的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

感谢楼主的分享,很实用,学到了

更多关于HarmonyOS 鸿蒙Next 应用静态快捷启动的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


一起加油!

HarmonyOS Next 应用静态快捷启动是指在鸿蒙系统中,开发者可以通过在应用的配置文件中定义静态快捷方式,使用户能够快速访问应用的特定功能或页面。静态快捷启动的实现主要依赖于应用的 config.json 文件,开发者可以在该文件中定义快捷方式的图标、标签和目标页面等信息。

config.json 文件中,开发者需要在 abilities 节点下为每个 ability 配置 shortcuts 属性,该属性是一个数组,每个元素代表一个快捷方式。每个快捷方式需要指定 idlabeliconintent 等属性。其中 id 是快捷方式的唯一标识符,label 是快捷方式的显示名称,icon 是快捷方式的图标资源,intent 是快捷方式的目标页面或功能。

例如,以下是一个简单的 config.json 文件中定义静态快捷方式的示例:

{
  "app": {
    "bundleName": "com.example.myapp"
  },
  "abilities": [
    {
      "name": "MainAbility",
      "shortcuts": [
        {
          "id": "shortcut1",
          "label": "快捷方式1",
          "icon": "$media:icon_shortcut1",
          "intent": {
            "targetBundle": "com.example.myapp",
            "targetClass": "com.example.myapp.MainAbility"
          }
        }
      ]
    }
  ]
}

在上述示例中,shortcuts 数组定义了一个快捷方式,其 idshortcut1,显示名称为“快捷方式1”,图标为 $media:icon_shortcut1,目标为 MainAbility

通过这种方式,开发者可以在鸿蒙系统中为应用添加静态快捷启动功能,提升用户体验。

回到顶部