1# Contacts Kit开发概述 2 3<!--Kit: Contacts Kit--> 4<!--Subsystem: Applications--> 5<!--Owner: @librahCode--> 6<!--Designer: @yanghaoqian--> 7<!--Tester: @shangzhijie--> 8<!--Adviser: @zhang_yixin13--> 9Contacts Kit可以帮助开发者轻松实现联系人的增删改查等功能。该Kit提供了一系列API,可以让开发者在应用中快速集成联系人管理功能。 10 11详情请参考[@ohos.contact API](../reference/apis-contacts-kit/js-apis-contact.md)。 12 13 14## 能力范围 15 16通过Contacts Kit,开发者可以对联系人进行管理,包括增加、删除、修改、查询联系人信息。开发者还可以通过Picker的方式,拉起联系人列表。 17 18面向所有应用开放如下能力: 19 20- [使用Picker选择联系人](#使用picker选择联系人) 21 22面向三方应用受限开放如下能力: 23 24<!--RP1--> 25> **注意:** 26> 27> 读取联系人需要声明接口调用的权限:ohos.permission.READ_CONTACTS,此权限级别为system_basic。添加联系人、删除联系人、更新联系人需要声明接口调用的权限:ohos.permission.WRITE_CONTACTS,此权限级别为system_basic。 28<!--RP1End--> 29 30- [联系人管理](#联系人管理受限开放) 31 32 33## 使用Picker选择联系人 34 35当用户选择联系人的时候,通过Picker的方式,拉起联系人列表,引导用户完成界面操作,接口本身无需申请权限。 36 371. 导入相关的联系人模块。 38 39 ```ts 40 import { contact } from '@kit.ContactsKit'; 41 import { BusinessError } from '@kit.BasicServicesKit'; 42 ``` 43 442. 调用联系人接口,拉起联系人列表,用户点击对应的联系人后返回。 45 46 ```ts 47 contact.selectContacts({ 48 isMultiSelect:false 49 },(err: BusinessError, data) => { 50 if (err) { 51 console.error('selectContact callback, errCode:' + err.code + ', errMessage:' + err.message); 52 return; 53 } 54 console.info(`selectContact callback: success data->${JSON.stringify(data)}`); 55 }); 56 57 ``` 58 593. 完成操作,返回想要的data数据。 60 61 62## 联系人管理(受限开放) 63 64若需要在应用内实现管理联系人的功能,可以使用permissions接口获取应用对联系人的编辑权限。 65 661. 声明接口调用所需要的权限。 67 <!--RP2--> 68 - 删除联系人,调用deleteContact接口,需要配置ohos.permission.WRITE_CONTACTS权限,权限级别为system_basic。 69 - 更新联系人,调用updateContact接口,需要配置ohos.permission.WRITE_CONTACTS权限,权限级别为system_basic。 70 - 查询联系人,调用queryContact接口,需要配置ohos.permission.READ_CONTACTS权限,权限级别为system_basic。 71 在申请权限前,请保证符合[权限使用的基本原则](../security/AccessToken/app-permission-mgmt-overview.md#权限使用的基本原则)。然后参考[申请应用权限](../security/AccessToken/determine-application-mode.md#system_basic等级应用申请权限的方式)声明对应权限。 72 <!--RP2End--> 73 742. 设置一个需要的Permissions数组变量。 75 763. 执行对应联系人的权限操作。 77 78 ```ts 79 // 示例代码 80 import { common, abilityAccessCtrl, Permissions, PermissionRequestResult } from '@kit.AbilityKit'; 81 import { contact } from '@kit.ContactsKit'; 82 import { BusinessError } from '@kit.BasicServicesKit'; 83 84 @Entry 85 @Component 86 struct Contact { 87 addContactByPermissions() { 88 // 在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext 89 let context = this.getUIContext().getHostContext() as common.UIAbilityContext; 90 const permissions: Array<Permissions> = ['ohos.permission.WRITE_CONTACTS']; 91 const contactInfo: contact.Contact = { 92 name: { fullName: '王小明' }, 93 phoneNumbers: [{ phoneNumber: '13912345678' }] 94 } 95 abilityAccessCtrl.createAtManager().requestPermissionsFromUser(context, permissions).then((result: PermissionRequestResult) => { 96 if (result.authResults[0] !== 0) { // 0 表示请求权限成功,其他任何非零值表示请求失败 97 console.error('request contact permissions failed'); 98 return; 99 } 100 contact.addContact(context, contactInfo).then((data) => { 101 console.info(`Succeeded in adding Contact. data: ${JSON.stringify(data)}`); 102 }).catch((err: BusinessError) => { 103 console.error(`Failed to add Contact. Code: ${err.code}, message: ${err.message}`); 104 }); 105 }) 106 } 107 108 build() { 109 Row() { 110 Column() { 111 Button('添加联系人') 112 .onClick(() => { 113 this.addContactByPermissions(); 114 }) 115 } 116 .width('100%') 117 } 118 .height('100%') 119 } 120 } 121``` 122