#HarmonyOS NEXT体验官#联系人管理器 原创
联系人管理器
作为一个为数不多的做鸿蒙开发的女性开发者,很荣幸能参与到目前鸿蒙生态的建设上来,今天我们就开看一下如何学习鸿蒙开发吧,
首先大家需要下载IDE
下载IDE
DevEco Studio NEXT Developer Beta2配套支持HarmonyOS NEXT Developer Beta2版本的应用及服务开发,新提供了引入工程外模块代码支持编码、构建、调试能力、支持构建字节码har包、支持webview场景调优、支持ArkTS内存泄漏自动检测等功能,持续提升应用及服务开发效率。大家在下面下载就好
https://developer.huawei.com/consumer/cn/deveco-studio/,
下载完成我们就可以开始学习啦。
我们先来做一个联系人管理器。
Contacts Kit开发概述
Contacts Kit可以帮助开发者轻松实现联系人的增删改查等功能。该Kit提供了一系列API,可以让开发者在应用中快速集成联系人管理功能。
约束与限制
读取联系人需要声明接口调用的权限:ohos.permission.READ_CONTACTS,此权限级别为system_basic。
添加联系人、删除联系人、更新联系人需要声明接口调用的权限:ohos.permission.WRITE_CONTACTS,此权限级别为system_basic。
所以我们需要先添加权限,然后申请ACL权限。
{
"name": "ohos.permission.READ_CONTACTS",
"reason": "$string:EntryAbility_desc",
"usedScene": {
"abilities": [
"FormAbility"
],
"when": "always"
}
},
选择联系人
当用户选择联系人的时候,通过Picker的方式,拉起联系人列表,引导用户完成界面操作,接口本身无需申请权限。
-
导入相关的联系人模块。
import { contact } from '@kit.ContactsKit'; import { BusinessError } from '@kit.BasicServicesKit';
-
调用联系人接口,拉起联系人列表,用户点击对应的联系人后返回。
contact.selectContacts({ isMultiSelect:false },(err: BusinessError, data) => { if (err) { console.error(`selectContact callback: err->${JSON.stringify(err)}`); return; } console.log(`selectContact callback: success data->${JSON.stringify(data)}`); });
-
完成操作,返回想要的data数据。
这样的话,我们就拿到联系人数据啦。这里我们就已经完成了联系人的获取,
联系人创建
接下来我们看一下联系人的创建。同样的,也是需要申请权限。
{
"name": "ohos.permission.WRITE_CONTACTS",
"reason": "$string:EntryAbility_desc",
"usedScene": {
"abilities": [
"FormAbility"
],
"when": "always"
}
}
添加联系人
contact.addContact
addContact(context: Context, contact: Contact): Promise<number>
添加联系人,使用Promise方式作为异步方法。
元服务API:从API version 12开始,该接口支持在元服务中使用。
需要权限:ohos.permission.WRITE_CONTACTS
系统能力:SystemCapability.Applications.ContactsData
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
context | Context | 是 | 应用上下文Context,Stage模型的应用Context定义见Context。 |
contact | Contact | 是 | 联系人信息。 |
返回值:
类型 | 说明 |
---|---|
Promise<number> | 以Promise形式返回结果,返回添加的联系人id。 |
错误码:
错误码ID | 错误信息 |
---|---|
201 | Permission denied. |
401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
// 获取context
let context = getContext(this) as Context;
let promise = contact.addContact(
context,
{name: {fullName: '坚果派教我学鸿蒙'},
phoneNumbers: [{phoneNumber: '17752170152'}]
});
promise.then((data) => {
console.log(`addContact success: data->${JSON.stringify(data)}`);
}).catch((err: BusinessError) => {
console.error(`addContact fail: err->${JSON.stringify(err)}`);
});
import { contact } from '@kit.ContactsKit';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct CONTACTSPage {
@State desc: contact.Contact[] = []
build() {
Column() {
Row() {
Text(
"联系人信息"
)
Text(
JSON.stringify(this.desc)
)
}
Button("添加通讯录").onClick(() => {
let context = getContext(this) as Context;
contact.addContact(
context,
{
name: { fullName: 'xxx' },
phoneNumbers: [{ phoneNumber: '17752170152' }]
}, (err: BusinessError, data) => {
if (err) {
console.error(`addContact callback: err->${JSON.stringify(err)}`);
return;
}
console.log(`addContact callback: success data->${JSON.stringify(data)}`);
});
})
Button("获取通讯录").onClick(() => {
contact.selectContacts({
isMultiSelect: false
}, (err: BusinessError, data) => {
if (err) {
console.error(`selectContact callback: err->${JSON.stringify(err)}`);
return;
}
// this.message = JSON.stringify(data)
this.desc = data
console.log(`selectContact callback: success data->${JSON.stringify(data[0].name?.fullName)}`);
});
})
}
.height('100%')
.width('100%')
}
}
这样的话,我们就完成了,联系人的创建与选择联系人,不得不说,目前鸿蒙提供的Kit还是很方便呢。