#星光计划2.0# HarmonyOS 项目实战之通讯录(Java) 原创 精华
作者:胡领情
【本文正在参与51CTO HarmonyOS技术社区创作者激励计划-星光计划2.0】
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 总结
有不对或者更优的处理技术方案请多多指教,共同学习,共同进步。
代码地址: https://gitee.com/hu-lingqing/contact-person.git
更多原创内容请关注:深开鸿技术团队
入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
很值得一学的文章