HarmonyOS鸿蒙Next中如何实现联系人管理功能,例如选择联系人,增加删除联系人,根据号码查询联系人等功能
HarmonyOS鸿蒙Next中如何实现联系人管理功能,例如选择联系人,增加删除联系人,根据号码查询联系人等功能 如何实现联系人管理功能,例如选择联系人,增加删除联系人,根据号码查询联系人等功能
- Contacts Kit可以实现联系人的增删改查等功能。参考文档:Contacts Kit开发概述。
- 增加删除联系人需要申请权限:ohos.permission.WRITE_CONTACTS,参考文档:contact.addContact接口,contact.deleteContact接口。
- 查询联系人需要申请权限:ohos.permission.READ_CONTACTS,参考文档:contact.queryContact接口。
- ohos.permission.WRITE_CONTACTS以及ohos.permission.READ_CONTACTS为受限开放权限。
import { common, abilityAccessCtrl, Permissions, PermissionRequestResult } from '@kit.AbilityKit';
import { contact } from '@kit.ContactsKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { PromptAction } from '@kit.ArkUI';
@Entry
@Component
struct Index {
@State context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
@State contact: string = '';
promptAction: PromptAction = this.getUIContext().getPromptAction();
aboutToAppear(): void {
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
const permissions: Array<Permissions> = ['ohos.permission.WRITE_CONTACTS', 'ohos.permission.READ_CONTACTS'];
abilityAccessCtrl.createAtManager()
.requestPermissionsFromUser(context, permissions)
.then((data: PermissionRequestResult) => {
console.info(`data: ${JSON.stringify(data)}`);
console.info(`data permissions: ${data.permissions}`);
console.info(`data authResults: ${data.authResults}`);
console.info(`data dialogShownResults: ${data.dialogShownResults}`);
})
.catch((err: BusinessError) => {
console.error('data:' + JSON.stringify(err));
});
}
selectByPicker(): Promise<contact.Contact[]> {
return contact.selectContacts();
}
addContacts() {
// 自定义构建联系人对象类
const contactInfo: contact.Contact = {
name: { fullName: 'xxx' },
phoneNumbers: [{ phoneNumber: '13xxxxxxxxx' }]
};
try {
contact.addContact(this.context, contactInfo, (err, data) => { // 调用接口增加联系人
if (err) {
console.error(`addContact callback, errCode: ${err.code}, errMessage: ${err.message}`);
return;
}
console.info(`addContact callback, data->${JSON.stringify(data)}`);
});
this.promptAction.showToast({
message: '添加成功',
duration: 2000
});
} catch (err) {
console.error(`errCode: ${err.code}, errMessage: ${err.message}`);
}
}
async deleteContacts() {
let contacts = await this.selectByPicker(); // 返回Picker选择的联系人对象。
contact.deleteContact(this.context, contacts[0].key, (err: BusinessError) => { // 调用接口删除联系人
if (err) {
console.error(`Failed to delete Contact. Code: ${err.code}, message: ${err.message}`);
return;
}
console.info('Succeeded in deleting Contact.');
this.promptAction.showToast({
message: '删除成功',
duration: 2000
});
});
}
queryContacts() {
contact.queryContactsByPhoneNumber(this.context, '13xxxxxxxxx', (err: BusinessError, data) => { // 调用接口根据号码查询联系人key
if (err) {
console.error(`Failed to query Contacts By PhoneNumber. Code: ${err.code}, message: ${err.message}`);
return;
}
contact.queryContact(this.context, data[0].key, (err: BusinessError, data) => { // 调用接口根据key查询联系人信息
if (err) {
console.error(`Failed to query Contact. Code: ${err.code}, message: ${err.message}`);
return;
}
console.info(`Succeeded in querying Contact. data->${JSON.stringify(data)}`);
this.contact = JSON.stringify(data);
this.promptAction.showToast({
message: '查询成功',
duration: 2000
});
});
console.info(`Succeeded in querying Contacts By PhoneNumber. data->${JSON.stringify(data)}`);
});
}
build() {
Column() {
Button('使用Picker拉起联系人')
.onClick(() => {
this.selectByPicker();
})
.fontSize(23)
.margin({ bottom: 5 });
Button('添加联系人')
.onClick(() => {
this.addContacts();
})
.fontSize(23)
.margin({ bottom: 5 });
Button('删除联系人')
.onClick(() => {
this.deleteContacts();
})
.fontSize(23)
.margin({ bottom: 5 });
Button('根据号码查询联系人')
.onClick(() => {
this.queryContacts();
})
.fontSize(23)
.margin({ bottom: 5 });
Text(this.contact);
}
.height('100%')
.width('100%')
.justifyContent(FlexAlign.Center);
}
}
参考地址
更多关于HarmonyOS鸿蒙Next中如何实现联系人管理功能,例如选择联系人,增加删除联系人,根据号码查询联系人等功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,联系人管理功能通过@ohos.contact接口实现。选择联系人使用contact.selectContact()方法;添加联系人调用contact.addContact()并传入Contact对象;删除联系人使用contact.deleteContact()指定联系人ID;根据号码查询通过contact.queryContactsByPhoneNumber()传入号码参数。这些接口直接操作系统联系人数据库,无需依赖Java或C语言组件。
在HarmonyOS Next中实现联系人管理功能,主要通过以下步骤:
-
权限申请:在
module.json5中声明ohos.permission.READ_CONTACTS和ohos.permission.WRITE_CONTACTS权限,确保应用具备访问和修改联系人数据的权限。 -
联系人数据操作:
- 查询联系人:使用
contact模块的queryContacts方法,通过指定条件(如号码)获取联系人列表。 - 添加联系人:通过
addContact方法,构建联系人数据(如姓名、电话号码)并插入到设备联系人数据库。 - 删除联系人:调用
deleteContact方法,根据联系人ID执行删除操作。
- 查询联系人:使用
-
联系人选择界面:利用
picker组件或系统提供的联系人选择器(如ContactPicker),让用户从列表中选择联系人。 -
数据同步与UI更新:操作完成后,使用数据管理机制(如分布式数据对象)或事件通知更新界面,确保数据一致性。
示例代码片段(查询联系人):
import contact from '@ohos.contact';
let key = 'phoneNumber';
let value = '138****1234';
contact.queryContacts(key, value, (err, data) => {
if (!err) {
console.log('查询结果:', data);
} else {
console.error('查询失败:', err);
}
});
注意处理异步回调与错误,确保用户体验流畅。

