智能客服
你问我答,随时在线为你解决问题

























开发者在使用Contacts Kit开发联系人相关功能时会遇到以下常见问题:
- error: install failed due to grant request permissions failed
Contacts Kit可以帮助开发者轻松实现联系人的增删改查等功能。该Kit提供了一系列API,可以让开发者在应用中快速集成联系人管理功能,详情请参考@ohos.contact API。
查询联系人信息有两种方式,一种是使用Picker选择联系人获取信息,另一种是使用@ohos.contact API查询联系人信息:
通过Picker的方式,拉起联系人列表,引导用户完成界面操作,接口本身无需申请权限,因此推荐使用这种方式。
- // 1.调用联系人接口,拉起联系人列表,用户点击对应的联系人后返回
- if (canIUse('SystemCapability.Applications.Contacts')) {
- contact.selectContacts({
- isMultiSelect: false
- }, (err: BusinessError, data) => {
- if (err) {
- console.error('selectContact callback, errCode:' + err.code + ', errMessage:' + err.message);
- return;
- }
- // 2.完成操作,返回想要的data数据
- console.info(`selectContact callback: success data->${JSON.stringify(data)}`);
- });
- } else {
- console.error('The current device does not support contact queries.');
- }
- let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
- const permissions: Array<Permissions> = ['ohos.permission.READ_CONTACTS'];
- abilityAccessCtrl.createAtManager()
- .requestPermissionsFromUser(context, permissions)
- .then((result: PermissionRequestResult) => {
- if (result.authResults[0] !== 0) { // 0 表示请求权限成功,其他任何非零值表示请求失败
- console.error('request contact permissions failed');
- return;
- }
- if (canIUse('SystemCapability.Applications.ContactsData')) {
- contact.queryContactsByPhoneNumber(context, '138xxxxxxxx', {
- attributes: [contact.Attribute.ATTR_NAME, contact.Attribute.ATTR_PHONE]
- }, (err: BusinessError, data) => {
- if (err) {
- console.error(`Failed to query Contacts By PhoneNumber. Code: ${err.code}, message: ${err.message}`);
- return;
- }
- console.info(`Succeeded in querying Contacts By PhoneNumber. data->${JSON.stringify(data)}`);
- if (data.length !== 0) {
- contact.queryContact(context, data[0].key, {
- attributes: [contact.Attribute.ATTR_NAME, contact.Attribute.ATTR_PHONE]
- }, (err: BusinessError, data) => {
- 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)}`);
- });
- }
- });
- } else {
- console.error('The current device does not support contact queries.');
- }
- })
- .catch((err: BusinessError) => {
- console.error(`Failed to queryContactsByPhoneNumber. Code: ${err.code}, message: ${err.message}`);
- });
完整示例参考如下:
- import { BusinessError } from '@kit.BasicServicesKit';
- import { contact } from '@kit.ContactsKit';
- import { abilityAccessCtrl, common, PermissionRequestResult, Permissions } from '@kit.AbilityKit';
-
- @Entry
- @Component
- struct ContactExample {
- build() {
- Column({ space: 20 }) {
- Button('使用Picker选择联系人')
- .onClick(() => {
- // 1.调用联系人接口,拉起联系人列表,用户点击对应的联系人后返回
- if (canIUse('SystemCapability.Applications.Contacts')) {
- contact.selectContacts({
- isMultiSelect: false
- }, (err: BusinessError, data) => {
- if (err) {
- console.error('selectContact callback, errCode:' + err.code + ', errMessage:' + err.message);
- return;
- }
- // 2.完成操作,返回想要的data数据
- console.info(`selectContact callback: success data->${JSON.stringify(data)}`);
- });
- } else {
- console.error('The current device does not support contact queries.');
- }
- });
-
- Button('根据电话号码和attrs查询联系人')
- .onClick(() => {
- let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
- const permissions: Array<Permissions> = ['ohos.permission.READ_CONTACTS'];
- abilityAccessCtrl.createAtManager()
- .requestPermissionsFromUser(context, permissions)
- .then((result: PermissionRequestResult) => {
- if (result.authResults[0] !== 0) { // 0 表示请求权限成功,其他任何非零值表示请求失败
- console.error('request contact permissions failed');
- return;
- }
- if (canIUse('SystemCapability.Applications.ContactsData')) {
- contact.queryContactsByPhoneNumber(context, '138xxxxxxxx', {
- attributes: [contact.Attribute.ATTR_NAME, contact.Attribute.ATTR_PHONE]
- }, (err: BusinessError, data) => {
- if (err) {
- console.error(`Failed to query Contacts By PhoneNumber. Code: ${err.code}, message: ${err.message}`);
- return;
- }
- console.info(`Succeeded in querying Contacts By PhoneNumber. data->${JSON.stringify(data)}`);
- if (data.length !== 0) {
- contact.queryContact(context, data[0].key, {
- attributes: [contact.Attribute.ATTR_NAME, contact.Attribute.ATTR_PHONE]
- }, (err: BusinessError, data) => {
- 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)}`);
- });
- }
- });
- } else {
- console.error('The current device does not support contact queries.');
- }
- })
- .catch((err: BusinessError) => {
- console.error(`Failed to queryContactsByPhoneNumber. Code: ${err.code}, message: ${err.message}`);
- });
- });
- }
- .height('100%')
- .width('100%')
- .justifyContent(FlexAlign.Center);
- }
- }
智能客服
你问我答,随时在线为你解决问题
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功