桌面快捷方式開發實戰
[參考文檔] (https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-desktop-shortcuts)
在module.json5配置文件中的abilities標簽下的metadata中設置resource屬性值為$profile:shortcuts_config,指定應用的快捷方式配置文件,即使用shortcuts_config.json文件中的shortcuts配置。
{"module": {// ..."abilities": [{"name": "EntryAbility","srcEntry": "./ets/entryability/EntryAbility.ets",// ..."skills": [{"entities": ["entity.system.home"],"actions": ["ohos.want.action.home"]}],"metadata": [{"name": "ohos.ability.shortcuts", // 配置快捷方式,該值固定為ohos.ability.shortcuts"resource": "$profile:shortcuts_config" // 指定shortcuts信息的資源位置}]}]}
}
shortcuts_config.json文件
{"shortcuts": [{"shortcutId": "shortcutId1","label": "$string:label1","icon": "$media:icon1","wants": [{"bundleName": "com.xxx.xxxx","moduleName": "entry","abilityName": "EntryAbility","parameters": {"shortcutsNamePath": "parameters"}}]}]
}
在EntryAbility.ets接受參數
onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {if(want.parameters?.shortcutsNamePath){AppStorage.setOrCreate('shortcutsNamePath', want.parameters.shortcutsNamePath||'')}
...onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {if(want.parameters?.shortcutsNamePath){AppStorage.setOrCreate('shortcutsNamePath', want.parameters.shortcutsNamePath||'')}
使用HMRouter或者Navigation渲染完畢后恢復頁面
onPageShow(): void {// 根據存入的AppStorage書寫恢復邏輯restoreThePageShortcut()}
恢復頁面-快捷方式大概邏輯
export const restoreThePageShortcut = () => {const shortcutsNamePath = AppStorage.get('shortcutsNamePath') as string// 根據參數判斷
if(shortcutsNamePath){
setTimeout(() => {
// 看情況處理AppStorage.setOrCreate('shortcutsNamePath', '') // 用完銷毀})
}}
注意,關于圖片,最好使用1024*1024圖片,中間的圖標較小的