更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com前言:假设你已经知道如何为鸿蒙APP添加服务卡片,本文重点介绍如何为卡片添加编辑功能。如果想了解更多Harmonyos卡片的创建,请参考Harmonyos官网指南https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-widget-provider-js-0000001150602175例:当某个应用的服务卡片没有编辑功能时,快捷菜单如下。添加编辑功能后,快捷菜单变为如下。可以看到在快捷菜单中有一个“编辑”菜单,点击“编辑”,会打开一个新的页面,这个页面是一个技能,主要功能是编辑卡片颜色。本文介绍如何增加“编辑”菜单和指定技能的链接。知识点:formConfigAbility参数formConfigAbility参数在配置文件config.json对应的表单节点下,表示卡片的配置跳转链接,URI格式,作用是指定Page能力导航到编辑页。配置格式为:ability://singleabilityname如果不配置“formConfigAbility”参数,则没有卡片编辑功能。比如上面例子中的formConfigAbility的配置是在config.json文件中module节点abilities子节点下的forms中,在具有编辑功能的formcard配置节点下,{"jsComponentName":"motto-1x2","isDefault":false,"scheduledUpdateTime":"01:30","defaultDimension":"1*2","formConfigAbility":"ability://com.droidzxy.timetable.ColorAbility","name":"motto","description":"Colorweek","colorMode":"auto","type":"JS","supportDimensions":["1*2"],做法:1.添加编辑page接下来我们要做的是,添加一个新的编辑页面,然后在选中编辑菜单的时候打开新添加的编辑页面。我们右键entry->src->main->java,在快捷菜单中选择New->Ability->EmptyPageAbility(Java),我们将其命名为ConfigAbility。在代码目录结构中,我们可以看到创建了以下文件ConfigAbility.java、ConfigAbilitySlice.java、ability_config.xml。我们在创建ConfigAbility的时候,默认创建了一个ConfigAbilitySlice,说明默认的Ability是ComposedofSlice,其实页面的加载也可以直接放在Ability中。但是当页面内容过多无法同时显示时,我们可以将同一个功能设计到同一个切片中,满足不同的条件时加载不同的切片。这个新增页面的默认布局文件是ability_config.xml。预览如下。我们可以在这个页面设计我们需要实现的卡片编辑功能。2.修改配置文件config.xml。我们直接在对应的卡片表单节点添加formConfigAbility属性,或者修改原来的formConfigAbility属性"formConfigAbility":"ability://com.droidzxy.timetable.ConfigAbility",3.在真机上编译安装点击编辑菜单卡,然后会出现以下页面。4.读写配置我们一般需要在编辑界面进行一些设置,这些设置会反映在原来的服务卡上。这时候我们想到的最简单的办法就是通过配置文件file在编辑页面Ability上写入配置,然后在服务卡对应的Ability中读取同一个配置文件,通常使用类似下面的方法DatabaseHelperdatabaseHelper=newDatabaseHelper(getContext());Preferencespreferences=databaseHelper.getPreferences("pref");preferences.putString("name",strName);首选项.flush();但是经过实践,我们发现不同的Abilities对应的getContext()是不一样的,即使MainAbility和ConfigAbility在同一个命名空间下,它们也会有自己的配置文件,所以如果使用上面的方法访问配置文件,您将无法访问同一文件。我们需要将getContext改为getApplicationContext,即DatabaseHelperdatabaseHelper=newDatabaseHelper(getApplicationContext());这样我们在ConfigAbility中写入配置文件,然后在MainAbility中读取配置文件时,可以保证读写的是同一个文件。总结:添加卡片编辑功能需要两步。添加JavaAbility显示编辑功能;在config.json中添加formConfigAbility属性,设置为新添加的Ability的全名。更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com
