
#在HarmonyOS星河遨游# HarmonyOS 项目实战之通讯录(Java) 原创
1 简介
通讯录demo主要分为联系人界面、设置紧急联系人、服务卡片3个模块,分为Java和JS两个版本,本篇主要讲解用尽可能的用Java去实现。
1.1 原型
感兴趣的小伙伴,可以自己根据原型效果自己尝试着去实现【通讯录demo简易原型】
1.2 场景示例
通过学习与练习本demo,可以延伸至以下场景
1.3 项目实战
《HarmonyOS 项目实战之通讯录Demo(JS)》《HarmonyOS 项目实战之通讯录(Java)》《HarmonyOS 项目实战之新闻头条(ArkUI-TS》
2 功能开发
2.1 联系人列表
2.1.1 实现效果
2.1.2 核心代码
参考:ListContainer-常用组件开发指导-Java UI框架-UI-开发-HarmonyOS应用开发
- ListContainer设置StickyContactProvider适配器
- HeaderDecor头部联动效果设置
- ContactData数据处理相关类,sortContactData方法用于排序等数据处理
sortContactData方法数据处理,排序,字母索引:
2.2 数据的增删改查
2.2.1 实现效果
2.2.2 增删改查实现
- ListContainer删除实现
- 随机添加一个联系人
- ContactData数据处理效果类,实现数据增删改查
2.2.3 紧急联系人数据存储
轻量级数据存储:轻量级数据存储概述-轻量级数据存储-数据管理-开发-HarmonyOS应用开发
- Key-Value数据结构
一种键值结构数据类型。Key是不重复的关键字,Value是数据值。
运作机制
- 本模块提供轻量级数据存储的操作类,应用通过这些操作类完成数据库操作。
- 借助DatabaseHelper API,应用可以将指定文件的内容加载到Preferences实例,每个文件最多有一个Preferences实例,系统会通过静态容器将该实例存储在内存中,直到应用主动从内存中移除该实例或者删除该文件。
- 获取到文件对应的Preferences实例后,应用可以借助Preferences API,从Preferences实例中读取数据或者将数据写入Preferences实例,通过flush或者flushSync将Preferences实例持久化。
核心代码实现
- 添加紧急联系人,并通知java卡片更新
- PreferenceUtils封装工具类,实现数据存储
2.3 第三方跳转
2.3.1 实现效果
2.3.2 拨打电话与发送短信
2.4 JS服务卡片
2.4.1 实现效果
2.4.2 创建卡片模板
- 使用DevEco Studio创建卡片工程
- 创建成功后,在config.json的module中会生成js模块,用于对应卡片的js相关资源,配置示例如下:
- config.json文件“abilities”配置forms模块细节如下:
- 创建一个ContactPersonAbility,覆写卡片相关回调函数。
- onCreateForm(Intent intent)
- onUpdateForm(long formId)
- onDeleteForm(long formId)
- onCastTempForm(long formId)
- onEventNotify(Map<Long, Integer> formEvents)
- onTriggerFormEvent(long formId, String message)
- onAcquireFormState(Intent intent)
当卡片使用方请求获取卡片时,卡片提供方会被拉起并调用onCreateForm(Intent intent)回调,intent中会带有卡片ID、卡片名称和卡片外观规格信息,可按需获取使用。
开发JS卡片时,FormAbility可以继承AceAbility或Ability,继承Ability时,需在onStart()方法中额外设置路由信息。
2.4.3 卡片数据绑定
2.4.4 卡片数据更新
2.4.5 卡片事件处理
卡片支持触发事件,覆写onTriggerFormEvent方法实现对事件的触发,
doCall就是前面的播打电话的方法
3 注意事项
Demo还有很多需要完善的地方
- 滑动时,上滑头部联动效果,索引有时会错乱。
- 紧急联系人没有和列表数据联动。
- 搜索功能未实现。
4 总结
