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.2.3条
-
配置完毕后:在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
感谢楼主的分享,很实用,学到了
更多关于HarmonyOS 鸿蒙Next 应用静态快捷启动的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
一起加油!
HarmonyOS Next 应用静态快捷启动是指在鸿蒙系统中,开发者可以通过在应用的配置文件中定义静态快捷方式,使用户能够快速访问应用的特定功能或页面。静态快捷启动的实现主要依赖于应用的 config.json
文件,开发者可以在该文件中定义快捷方式的图标、标签和目标页面等信息。
在 config.json
文件中,开发者需要在 abilities
节点下为每个 ability
配置 shortcuts
属性,该属性是一个数组,每个元素代表一个快捷方式。每个快捷方式需要指定 id
、label
、icon
和 intent
等属性。其中 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
数组定义了一个快捷方式,其 id
为 shortcut1
,显示名称为“快捷方式1”,图标为 $media:icon_shortcut1
,目标为 MainAbility
。
通过这种方式,开发者可以在鸿蒙系统中为应用添加静态快捷启动功能,提升用户体验。