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