鸿蒙OS开发:典型页面场景【一次开发,多端部署】(信息应用)案例

信息应用

简介

内容介绍

Mms应用是OpenHarmony中预置的系统应用,主要的功能包含信息查看、发送短信、接收短信、短信送达报告、删除短信等功能。

架构图

目录

复制代码
/Mms/
├── doc                                        # 资料
├── entry
│   └── src
│       └── main
│           └── ets                            # ets代码目录
│               └── default                    # 业务代码目录
│                   ├── data                   # 自定义数据类型
│                   ├── model                  # 对接数据库
│                   ├── pages                  # 所有页面
│                       ├── conversation       # 会话详情页面
│                       ├── conversationlist   # 信息列表页面
│                       ├── index              # 初始页面
│                       ├── infomsg            # 通知信息列表页面
│                       ├── queryreport        # 报告详情页面
│                       └── settings           # 设置页面
│                   ├── service                # 业务逻辑
│                   ├── utils                  # 工具类
│                   ├── views                  # 自定义组件
│                   └── app.ets                # 应用生命周期
│               └── StaticSubscriber           # 静态事件监听
│           ├── resources                      # 资源配置文件存放目录
│           └── config.json                    # 全局配置文件
├── signs                                      # 签名
└── LICENSE

相关仓

applications_contacts

联系人应用

简介

开发前请熟悉鸿蒙开发指导文档gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

内容介绍

Contacts应用是OpenHarmony中预置的系统应用,主要的功能包含拨号盘、通话记录查看、通话记录批量删除、联系人列表、详情查看和联系人的新建等功能。

架构图

该应用架构主要结合MVP+领域驱动设计思路。

目录

复制代码
/Contacts/
├── doc                                    # 资料
├── common                                 # 通用工具
├── feature                                # 业务模块
│   └── src
│       └── main
│           └── ets     
|               ├── account                # 联系人账号
│               ├── call                   # 通话记录
│               ├── contact                # 联系人
│                   ├── contact            # 存储契约
│                   ├── entity             # 实体
│                   └── repo               # 仓库
│               ├── dialpad                # 拨号盘
│               ├── phonenumber            # 手机号码
│               └── simcard                # SIM卡
├── entry                 
│   └── src
│       └── main
│           └── ets                        # js代码目录
│               └── MainAbility            # 公共页面样式
│                   ├── component          # 组件封装
│                   ├── feature            # 特性集合
│                   |── model              # 模型
│                   |── pages              # TS声明式页面/组件
│                   |── presenter          # 页面展示逻辑
│                   |── util               # 工具类
│                   └── workers            # JS多线程服务
│               └── app.ets                # 应用生命周期/公共方法存放
│           ├── resources                  # 资源配置文件存放目录
│           └── config.json                # 全局配置文件
├── infra                                  # 构建脚本
├── signs                                  # 签名
└── LICENSE

联系人数据库子系统

applications_contactsdata

简介

联系人数据库应用是每一个用户管理联系人数据库的不可缺少的一个信息管理应用, 它的内容对于用户管理者来说是至关重要的,所以联系人数据库应该能够为每一个 用户的管理提供充足的信息和快捷查询手段,大大方便用户合理的管理联系人数据库信息。

架构图

目录

复制代码
/foundation/contactsdataability/
├── ability
│   ├── account                        #账户管理
│   ├── common                         #公共方法:log,utils等
│   ├── datadisasterrecovery           #数据损坏恢复
│   ├── merge                          #联系人合并
│   └── sinicization                   #汉字转拼音相关
├── contacts                            #NAPI
├── dataBusiness
│   ├── calllog                        #通话记录
│   ├── contacts                       #联系人
│   ├── quicksearch                    #快速检索
│   └── voicemail                      #语音信箱
├── test                               #测试目录
├── BUILD.gn
└── ohos.build

使用说明

概述

提供联系人数据和通话记录以及语音信箱增、删、改、查、等接口。 接口参数主要有string类型的uri和对象类型的value、DataSharePredicates

使用功能接口前,需要导入相关模块。

复制代码
import dataShare from '@ohos.data.dataShare';

通话记录

dataShareHelper.insert(uri: string, value: ValuesBucket)
  • 接口说明

    通话记录插入

  • insert参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    value 只读 ValuesBucket 数据库字段key-value对象

返回值为 通话记录id

更新示例

复制代码
import dataShare from '@ohos.data.dataShare';
var calllogData = "datashare:///com.ohos.calllogability";
var calllogUri = "datashare:///com.ohos.calllogability/calls/calllog";
var value = {"phone_number" : "xxxxx","display_name" : "xxx"};
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(calllogData);
// 调用insert方法
dataShareHelper.insert(calllogUri, value).then((data) => {
	console.info("calllogId = " + data);
});
dataShareHelper.update(uri: string, condition: DataSharePredicates, value: ValuesBucket)
  • 接口说明

    通话记录修改

  • update参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    condition 只读 DataSharePredicates 更新条件
    value 只读 ValuesBucket 数据库字段key-value对象

返回值为 成功为0否则为-1

修改示例

复制代码
import dataShare from '@ohos.data.dataShare';
var calllogData = "datashare:///com.ohos.calllogability";
var calllogUri = "datashare:///com.ohos.calllogability/calls/calllog";
var value = {"phone_number" : "xxxxx","display_name" : "xxx"};
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(calllogData);
// 条件参数
let condition = new dataShare.DataSharePredicates();
condition.equalTo("id", "xxx");
// 调用update方法
dataShareHelper.update(calllogUri, value, condition).then((data) => {
	console.info("resultCode = " + data);
});
dataShareHelper.delete(uri: string, condition: DataSharePredicates)
  • 接口说明

    通话记录删除

  • delete参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    condition 只读 DataSharePredicates 删除条件

返回值为 成功为0否则为-1

删除示例

复制代码
import dataShare from '@ohos.data.dataShare';
var calllogData = "datashare:///com.ohos.calllogability";
var calllogUri = "datashare:///com.ohos.calllogability/calls/calllog";
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(calllogData);
// 条件参数
let condition = new dataShare.DataSharePredicates();
condition.equalTo("id", "xxx");
// 调用delete方法
dataShareHelper.delete(calllogUri, condition).then((data) => {
	console.info("deleteCode = " + data);
});
dataShareHelper.query(uri: string, condition: DataSharePredicates, resultColumns: array)
  • 接口说明

    通话记录查询

  • 查询参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    condition 只读 DataSharePredicates 查询条件
    resultColumns 只读 array 需要查询的列字段名称

返回值为 ResultSet 查询结果集

查询示例

复制代码
import dataShare from '@ohos.data.dataShare';
var calllogData = "datashare:///com.ohos.calllogability";
var calllogUri = "datashare:///com.ohos.calllogability/calls/calllog";
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(calllogData);
// 条件参数
let condition = new dataShare.DataSharePredicates();
condition.equalTo("id", "xxx");
var resultColumns = [ "id", "display_name", "phone_number"];
// 调用query方法
dataShareHelper.query(calllogUri, resultColumns, condition).then((resultSet) => {
    if (resultSet.goToFirstRow()) {
        do {
            var displayName = resultSet.getString(resultSet.getColumnIndex("display_name"));
            var id = resultSet.getLong(resultSet.getColumnIndex("id"));
            var phoneNumber = resultSet.getString(resultSet.getColumnIndex("phone_number"));
        } while (resultSet.goToNextRow());
    }
    resultSet.close();	
});

返回值为 ResultSet 查询结果集

语音信箱

dataShareHelper.insert(uri: string, value: ValuesBucket)
  • 接口说明

    语音信箱插入

  • insert参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    value 只读 ValuesBucket 数据库字段key-value对象

返回值为 语音信箱表id

更新示例

复制代码
import dataShare from '@ohos.data.dataShare';
var voicemailData = "datashare:///com.ohos.voicemailability";
var voicemailUri = "datashare:///com.ohos.voicemailability/calls/voicemail";
var value = {"phone_number" : "xxxxx","display_name" : "xxx"};
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(voicemailData);
// 调用insert方法
dataShareHelper.insert(voicemailUri, value).then((data) => {
	console.info("calllogId = " + data);
});
dataShareHelper.update(uri: string, condition:DataSharePredicates, value: ValuesBucket)
  • 接口说明

    语音信箱修改

  • update参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    condition 只读 DataSharePredicates 更新条件
    value 只读 ValuesBucket 数据库字段key-value对象

返回值为 成功为0否则为-1

修改示例

复制代码
import dataShare from '@ohos.data.dataShare';
var voicemailData = "datashare:///com.ohos.voicemailability";
var voicemailUri = "datashare:///com.ohos.voicemailability/calls/voicemail";
var value = {"phone_number" : "xxxxx","display_name" : "xxx"};
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(voicemailData);
// 条件参数
let condition = new dataShare.DataSharePredicates();
condition.equalTo("id", "xxx");
// 调用update方法
dataShareHelper.update(voicemailUri, value, condition).then((data) => {
	console.info("resultCode = " + data);
});
dataShareHelper.delete(uri: string, condition: DataSharePredicates)
  • 接口说明

    语音信箱删除

  • delete参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    condition 只读 DataSharePredicates 删除条件

返回值为 成功为0否则为-1

删除示例

复制代码
import dataShare from '@ohos.data.dataShare';
var voicemailData = "datashare:///com.ohos.voicemailability";
var voicemailUri = "datashare:///com.ohos.voicemailability/calls/voicemail";
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(voicemailData);
// 条件参数
let condition = new dataShare.DataSharePredicates();
condition.equalTo("id", "xxx");
// 调用delete方法
dataShareHelper.delete(voicemailUri, condition).then((data) => {
	console.info("deleteCode = " + data);
});
dataShareHelper.query(uri: string, condition: DataSharePredicates, resultColumns:array)
  • 接口说明

    语音信箱查询

  • 查询参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    condition 只读 DataSharePredicates 查询条件
    resultColumns 只读 array 需要查询的列字段名称

返回值为 ResultSet 查询结果集

查询示例

复制代码
import dataShare from '@ohos.data.dataShare';
var voicemailData = "datashare:///com.ohos.voicemailability";
var voicemailUri = "datashare:///com.ohos.voicemailability/calls/voicemail";
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(voicemailData);
// 条件参数
let condition = new dataShare.DataSharePredicates();
condition.equalTo("id", "xxx");
var resultColumns = [ "id", "display_name", "phone_number"];
// 调用query方法
dataShareHelper.query(voicemailUri, resultColumns, condition).then((resultSet) => {
    if (resultSet.goToFirstRow()) {
        do {
            var displayName = resultSet.getString(resultSet.getColumnIndex("display_name"));
            var id = resultSet.getLong(resultSet.getColumnIndex("id"));
            var phoneNumber = resultSet.getString(resultSet.getColumnIndex("phone_number"));
        } while (resultSet.goToNextRow());
    }
    resultSet.close();	
});

联系人

dataShareHelper.insert(uri: string, value: ValuesBucket)
  • 接口说明

    联系人插入

  • insert参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    value 只读 ValuesBucket 数据库字段key-value对象

返回值为 联系人数据表id

更新示例

复制代码
import dataShare from '@ohos.data.dataShare';
var contactsData = "datashare:///com.ohos.contactsdataability";
var rawContactUri = "datashare:///com.ohos.contactsdataability/contacts/raw_contact";
var contactDataUri = "datashare:///com.ohos.contactsdataability/contacts/contact_data";
var value = {"display_name" : "xxx"};
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(contactsData);
// 调用insert方法
dataShareHelper.insert(rawContactUri, value).then((rawContactId) => {
	console.info("rawContactId = " + rawContactId);
    // 联系人详细信息插入
    var contactDataValues = {
        "raw_contact_id" : rawContactId,
        "content_type" : "name",
        "detail_info" : "xxxxxxx"
    };
   dataShareHelper.insert(contactDataUri, contactDataValues).then((contactDataId) => {
      console.info("rawContactId = " + contactDataId);
   };
});
dataShareHelper.update(uri: string, condition: DataSharePredicates, value: ValuesBucket)
  • 接口说明

    联系人修改

  • update参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    condition 只读 DataSharePredicates 更新条件
    value 只读 ValuesBucket 数据库字段key-value对象

返回值为 成功为0否则为-1

修改示例

复制代码
import dataShare from '@ohos.data.dataShare';
var contactsData = "datashare:///com.ohos.contactsdataability";
var rawContactUri = "datashare:///com.ohos.contactsdataability/contacts/raw_contact";
var contactDataUri = "datashare:///com.ohos.contactsdataability/contacts/contact_data";
var value = {"display_name" : "xxx"};
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(contactsData);
// 条件参数
let condition = new dataShare.DataSharePredicates();
condition.equalTo("id", "xxx");
// 调用update方法
dataShareHelper.update(rawContactUri, value, condition).then((data) => {
	console.info("resultCode = " + data);
});
dataShareHelper.delete(uri: string, condition: DataSharePredicates)
  • 接口说明

    联系人删除

  • delete参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    condition 只读 DataSharePredicates 删除条件

返回值为 成功为0否则为-1

删除示例

复制代码
import dataShare from '@ohos.data.dataShare';
var contactsData = "datashare:///com.ohos.contactsdataability";
var rawContactUri = "datashare:///com.ohos.contactsdataability/contacts/raw_contact";
var contactDataUri = "datashare:///com.ohos.contactsdataability/contacts/contact_data";
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(contactsData);
// 条件参数
let condition = new dataShare.DataSharePredicates();
condition.equalTo("id", "xxx");
// 调用delete方法
dataShareHelper.delete(contactDataUri, condition).then((data) => {
	console.info("deleteCode = " + data);
});
dataShareHelper.query(uri: string, condition: DataSharePredicates, resultColumns: array)
  • 接口说明

    联系人查询

  • 查询参数描述

    名称 读写属性 类型 必填 描述
    uri 只读 string 具体操作的uri
    condition 只读 DataSharePredicates 查询条件
    resultColumns 只读 array 需要查询的列字段名称

返回值为 ResultSet 查询结果集

查询示例

复制代码
import dataShare from '@ohos.data.dataShare';
var contactsData = "datashare:///com.ohos.contactsdataability";
var rawContactUri = "datashare:///com.ohos.contactsdataability/contacts/raw_contact";
// 获取dataShareHelper
let dataShareHelper = dataShare.createDataShareHelper(contactsData);
// 条件参数
let condition = new dataShare.DataSharePredicates();
condition.equalTo("id", "xxx");
var resultColumns = [ "id", "display_name"];
// 调用query方法
dataShareHelper.query(rawContactUri, resultColumns, condition).then((resultSet) => {
    if (resultSet.goToFirstRow()) {
        do {
            var displayName = resultSet.getString(resultSet.getColumnIndex("display_name"));
        } while (resultSet.goToNextRow());
    }
    resultSet.close();	
});

`HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿`

系统公共uri

复制代码
| datashare:///com.ohos.contactsdataability                                       |
| datashare:///com.ohos.contactsdataability/contacts/contact                      |
| datashare:///com.ohos.contactsdataability/contacts/raw_contact                  |
| datashare:///com.ohos.contactsdataability/contacts/contact_data                 |
| datashare:///com.ohos.contactsdataability/contacts/raw_contact/query_merge_list |
| datashare:///com.ohos.contactsdataability/contacts/raw_contact/split_contact    |
| datashare:///com.ohos.contactsdataability/contacts/raw_contact/manual_merge     |
| datashare:///com.ohos.contactsdataability/contacts/raw_contact/auto_merge       |
| datashare:///com.ohos.contactsdataability/contacts/contact_type                 |
| datashare:///com.ohos.contactsdataability/contacts/groups                       |
| datashare:///com.ohos.contactsdataability/contacts/photo_files                  |
| datashare:///com.ohos.contactsdataability/contacts/contact_blocklist            |
| datashare:///com.ohos.contactsdataability/contacts/deleted_raw_contact          |
| datashare:///com.ohos.contactsdataability/contacts/search_contact               |
| datashare:///com.ohos.contactsdataability/contacts/deleted_raw_contact          |
| datashare:///com.ohos.contactsdataability/contacts/deleted_raw_contact_record   |
| datashare:///com.ohos.contactsdataability/contacts/backup                       |
| datashare:///com.ohos.contactsdataability/contacts/recover                      |
| datashare:///com.ohos.contactsdataability/profile/contact                       |
| datashare:///com.ohos.contactsdataability/profile/raw_contact                   |
| datashare:///com.ohos.contactsdataability/profile/contact_data                  |
| datashare:///com.ohos.contactsdataability/profile/raw_contact/query_merge_list  |
| datashare:///com.ohos.contactsdataability/profile/raw_contact/split_contact     |
| datashare:///com.ohos.contactsdataability/profile/raw_contact/manual_merge      |
| datashare:///com.ohos.contactsdataability/profile/raw_contact/auto_merge        |
| datashare:///com.ohos.contactsdataability/profile/contact_type                  |
| datashare:///com.ohos.contactsdataability/profile/groups                        |
| datashare:///com.ohos.contactsdataability/profile/photo_files                   |
| datashare:///com.ohos.contactsdataability/profile/contact_blocklist             |
| datashare:///com.ohos.contactsdataability/profile/deleted_raw_contact           |
| datashare:///com.ohos.contactsdataability/profile/search_contact                |
| datashare:///com.ohos.contactsdataability/profile/deleted_raw_contact           |
| datashare:///com.ohos.contactsdataability/profile/deleted_raw_contact_record    |
| datashare:///com.ohos.contactsdataability/profile/backup                        |
| datashare:///com.ohos.contactsdataability/profile/recover                       |
| datashare:///com.ohos.calllogability                                            |
| datashare:///com.ohos.calllogability/calls/calllog                              |
| datashare:///com.ohos.voicemailability                                          |
| datashare:///com.ohos.voicemailability/calls/voicemail
相关推荐
缘澄6 分钟前
ArkUI基础篇-组件事件
harmonyos·arkui
鸿蒙先行者8 分钟前
HarmonyOS与OpenHarmony区别分析
harmonyos
li理22 分钟前
鸿蒙NEXT渲染控制全面解析:从条件渲染到混合开发
harmonyos
li理1 小时前
鸿蒙Next组件扩展全面解析:从构建函数到样式复用的完整指南
前端·harmonyos
博客园团队1 小时前
2025 HarmonyOS 创新赛正式启动,百万大奖等你挑战!
harmonyos
秋难降2 小时前
聊聊 “摸鱼式” 遍历 —— 受控遍历的小心机
数据结构·算法·程序员
黑土豆2 小时前
那些藏在云边小卖部里的温暖与遗憾
程序员
Java中文社群3 小时前
超简单!手把手教你玩转ClaudeCode,无魔法不会员!
人工智能·程序员
AlbertZein3 小时前
HarmonyOS5 一顿饭时间 —— LRU、磁盘缓存与内存优化的结合
架构·harmonyos
AI大模型3 小时前
如何成为一名成功的AI产品经理:从传统产品到AI产品的转型之路
程序员·llm·agent