为自己的鸿蒙卡片增加编辑能力

系统 OpenHarmony
假设您已经知道了如何为鸿蒙应用增加服务卡片,本文重点介绍如何为卡片增加编辑能力。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://harmonyos.51cto.com​

前言:

假设您已经知道了如何为鸿蒙应用增加服务卡片,本文重点介绍如何为卡片增加编辑能力。

如果想了解更多关于创建鸿蒙卡片的知识,请参考鸿蒙官网指南

​https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-widget-provider-js-0000001150602175​

示例:

有一个应用的服务卡片在没有编辑功能时,快捷菜单如下,

增加了编辑功能后,快捷菜单变成如下,

可以看到快捷菜单中多了一个“编辑” 菜单,点击“编辑” ,会打开一个新的页面,

这个页面是一个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中读配置文件时,才能保证读写的是同一个文件。

总结:

增加卡片编辑功能就两步,

  1. 增加一个Java Ability用于显示编辑功能;
  2. 在config.json中增加formConfigAbility属性并设置为新加的Ability的完整名字。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://harmonyos.51cto.com​

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2023-09-18 15:12:47

服务卡片ArkTS

2012-08-06 09:52:03

Android搜索功能

2009-08-14 09:23:00

2020-03-10 09:16:42

勒索软件攻击赎金

2011-08-16 16:20:33

Linuxkconfigmakefile

2021-12-24 10:34:11

鸿蒙HarmonyOS应用

2021-03-02 14:34:48

鸿蒙HarmonyOS应用开发

2011-08-30 09:18:39

EnterpriseD云计算迁移

2011-10-31 10:17:05

插件

2020-04-09 14:23:44

PythonMarkdown编辑器

2020-12-18 09:49:21

鸿蒙HarmonyOS游戏

2018-05-25 10:24:35

职场技能互联网

2023-03-17 16:26:25

开源鸿蒙蓝牙能力

2023-08-07 14:09:58

数据库开发

2012-08-06 09:03:52

2015-10-26 13:41:41

Aleax查询服务

2011-09-14 16:40:12

Android SDK

2009-04-08 16:47:11

GoogleApp EngineJava

2024-01-15 14:40:03

TextualPythonTUI

2010-04-06 14:55:33

CentOS系统
点赞
收藏

51CTO技术栈公众号