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