為自己的鴻蒙卡片增加編輯能力
??https://harmonyos.51cto.com??
前言:
假設您已經知道了如何為鴻蒙應用增加服務卡片,本文重點介紹如何為卡片增加編輯能力。
如果想了解更多關于創建鴻蒙卡片的知識,請參考鴻蒙官網指南
示例:
有一個應用的服務卡片在沒有編輯功能時,快捷菜單如下,

增加了編輯功能后,快捷菜單變成如下,

可以看到快捷菜單中多了一個“編輯” 菜單,點擊“編輯” ,會打開一個新的頁面,

這個頁面是一個Ability,主要功能是編輯卡片顏色的。
本篇文章介紹如何增加“編輯”菜單,并鏈接到指定的Ability。
知識點:
formConfigAbility參數
formConfigAbility參數在配置文件config.json中對應的form節點下,它表示卡片的配置跳轉鏈接,采用URI格式,它的作用是指定導航到編輯頁面的 Page ability。
配置格式為:ability://單個ability名字
如果不配置“formConfigAbility”參數,則無卡片編輯功能。
比如上面示例中formConfigAbility的配置在,
config.json文件中module節點的abilities子節點下的forms,在擁有編輯功能的form卡片的配置節點下,
{
"jsComponentName": "motto-1x2",
"isDefault": false,
"scheduledUpdateTime": "01:30",
"defaultDimension": "1*2",
"formConfigAbility": "ability://com.droidzxy.timetable.ColorAbility",
"name": "motto",
"description": "彩色星期",
"colorMode": "auto",
"type": "JS",
"supportDimensions": [
"1*2"
],
實踐:
1.增加編輯頁面
我們下面要做的是,新增加一個編輯頁面,然后讓選擇編輯菜單時打開新增加的編輯頁面,
我們在entry->src->main->java上右擊,在快捷菜單中選擇 New->Ability->Empty Page Ability(Java) ,

我們命名為ConfigAbility,

在代碼目錄結構上,我們可以看到,創建了如下文件
ConfigAbility.java,
ConfigAbilitySlice.java,
ability_config.xml

我們創建ConfigAbility的時候,默認創建了一個ConfigAbilitySlice,說明默認Ability 是由Slice 組成的 ,實際上頁面的加載也可以直接放到Ability里。但當頁面內容多,無法同時顯示時,我們可以把相同功能設計到同一個slice里面,在滿足不同條件時加載不同的slice。
我們新增加的這個頁面的默認布局文件為ability_config.xml,預覽如下

我們可以在這個頁面設計自己需要實現的卡片編輯功能。
2.修改配置文件config.xml
我們在對應的卡片form節點直接增加formConfigAbility屬性,或者修改原來的formConfigAbility屬性
"formConfigAbility": "ability://com.droidzxy.timetable.ConfigAbility",
3.編譯安裝
真機上點擊卡片的編輯菜單,就會出現如下頁面。

4. 讀寫配置
我們一般在編輯界面通常要做一些設置,這些設置會反應到原來的服務卡片上,這時,我們想到的最簡單的方法是通過配置文件的方式,在編輯頁面Ability寫配置文件,然后在服務卡片對應的Ability里讀同樣的配置文件,通常會用到類似如下方法
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
Preferences preferences = databaseHelper.getPreferences("pref");
preferences.putString(“name”, strName);
preferences.flush();
但是,實踐后我們發現,不同的Ability對應的getContext()是不一樣的,即使MainAbility和ConfigAbility是在同一個命名空間下,但它們會有各自的配置文件,所以如果用上述方法訪問配置文件,那么是訪問不到相同文件的。我們需要把getContext改為getApplicationContext,即
DatabaseHelper databaseHelper = new DatabaseHelper(getApplicationContext());
這樣在ConfigAbility寫配置文件,然后在MainAbility中讀配置文件時,才能保證讀寫的是同一個文件。
總結:
增加卡片編輯功能就兩步,
- 增加一個Java Ability用于顯示編輯功能;
- 在config.json中增加formConfigAbility屬性并設置為新加的Ability的完整名字。
??https://harmonyos.51cto.com??






















