HarmonyOS鸿蒙Next中添加联系人到通讯录没反应

HarmonyOS鸿蒙Next中添加联系人到通讯录没反应 您好。点击添加联系人按钮,把联系人的手机号名字等信息保存至手机的通讯录中,但是目前点击之后没有任何反应,请问这种添加方式为什么不可以呢,应该如何正确把信息保存至通讯录中呢?请问应该如何解决?

添加联系人方法代码片段如下:

onConcatBtnClick() {
// 获取context
let context = getContext(this) as Context;
contact.addContact(
context,
{
name: { fullName: '张先生' },
phoneNumbers: [{phoneNumber: '13888888888'}],
emails: [{email: 'zhang@xxx.com'}],
websites: [{website: 'www.baidu.com'}],
note: { noteContent: '巴拉巴拉巴拉巴拉一些备注的信息' },
nickName: { nickName: '小张' },
portrait: { uri: 'xxx' },
imAddresses: [
{
imAddress: "测试地址",
labelName: "CUSTOM_LABEL"
}
],
events: [{ eventDate: "2000.08.20", labelName: 'EVENT_BIRTHDAY' }]
},
(err: BusinessError, data) => {
if (err) {
console.log(`addContact callback: err->${JSON.stringify(err)}`);
return;
}
console.log(`addContact callback: success data->${JSON.stringify(data)}`);
});
}

更多关于HarmonyOS鸿蒙Next中添加联系人到通讯录没反应的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

参考下面的步骤:

1、module.json5文件中的权限声明如下:

{
  "requestPermissions": [
    {
      "name": "ohos.permission.READ_CONTACTS",
      "reason": "$string:study_reason",
      "usedScene": {
        "abilities": [
          "EntryAbility"
        ],
        "when": "inuse"
      }
    },
    {
      "name": "ohos.permission.WRITE_CONTACTS",
      "reason": "$string:study_reason",
      "usedScene": {
        "abilities": [
          "EntryAbility"
        ],
        "when": "inuse"
      }
    },
    {
      "name": "ohos.permission.INTERNET"
    }
  ]
}

2、略微调整兄弟你提供的代码,操作系统联系人前需要通过代码申请关于contact的相关读写权限,并需要按照步骤1在代码所在的模块的module.json5文件中声明权限

import { BusinessError } from '@kit.BasicServicesKit';
import { contact } from '@kit.ContactsKit';
import { promptAction } from '@kit.ArkUI';
import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  onConcatBtnClick() {
    // 获取context
    let context = getContext(this) as common.UIAbilityContext;
    const permissions: Array<Permissions> = ['ohos.permission.WRITE_CONTACTS','ohos.permission.READ_CONTACTS'];

    const contactInfo: contact.Contact = {
      name: { fullName: '张先生' },
      phoneNumbers: [{ phoneNumber: '13888888888' }],
      emails: [{ email: 'zhang@xxx.com' }],
      websites: [{ website: 'www.baidu.com' }],
      note: { noteContent: '巴拉巴拉巴拉巴拉一些备注的信息' },
      nickName: { nickName: '小张' },
      portrait: { uri: 'xxx' },
      imAddresses: [
        {
          imAddress: "测试地址",
          labelName: "CUSTOM_LABEL"
        }
      ],
      events: [{ eventDate: "2000.08.20", labelName: 'EVENT_BIRTHDAY' }]
    }

    abilityAccessCtrl.createAtManager().requestPermissionsFromUser(context, permissions).then(() => {
      try {
        contact.addContact(
          context,
          contactInfo, (err: BusinessError, data) => {
          if (err) {
            console.log(`addContact callback: err->${JSON.stringify(err)}`);
            return;
          }
          console.log(`addContact callback: success data->${JSON.stringify(data)}`);
        });
      } catch (err) {
        console.error('errCode: ' + err.code + ', errMessage: ' + err.message);
      }
    })

  }

  build() {
    Column() {
      Button('点击').onClick(() => {
        this.onConcatBtnClick()
        promptAction.showToast({ message: `方法已执行` })
      })
    }
    .width("100%")
    .height("100%")
    .justifyContent(FlexAlign.Center)
  }
}

更多关于HarmonyOS鸿蒙Next中添加联系人到通讯录没反应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中添加联系人到通讯录没反应,可能的原因包括:

  • 权限问题:应用未获得必要的通讯录读写权限。
  • 数据同步问题:设备未正确同步云端通讯录数据。
  • 系统缓存问题:系统缓存可能导致操作无响应。
  • 应用兼容性问题:应用与当前鸿蒙版本不兼容。
  • 系统Bug:系统本身可能存在影响通讯录功能的Bug。
  • 存储空间不足:设备存储空间不足可能影响通讯录操作。

建议检查权限设置、同步状态、清理缓存、更新应用或系统,或重启设备。

在HarmonyOS鸿蒙Next中添加联系人无反应,可能由以下原因引起:

  1. 权限问题:确保已授予通讯录读写权限。进入“设置” > “应用管理” > “通讯录” > “权限”,检查权限是否开启。

  2. 应用缓存:清理通讯录应用缓存。进入“设置” > “应用管理” > “通讯录” > “存储”,点击“清除缓存”。

  3. 系统更新:检查系统是否为最新版本,更新可能修复已知问题。进入“设置” > “系统和更新” > “软件更新”进行检查。

  4. 重启设备:尝试重启设备,解决临时性故障。

如果问题仍未解决,建议备份数据后恢复出厂设置或联系官方客服。

回到顶部