HarmonyOS 添加联系人到通讯录没反应

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

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

onConcatBtnClick() {
  // 获取context
  let context = getContext(this) as Context;
  contact.addContact(
    context,
    {
      name: { fullName: '张先生' },
      phoneNumbers: [{phoneNumber: '13888888888'}],
      emails: [{email: 'zhang@xxx.com'}],
      websites: [{website: 'www.huawei.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
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

针对您的代码做了略微调整,通过want拉起通讯录新增联系人页面并传入参数的方法实现,修改后的代码如下:

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'];

    const contactInfo: contact.Contact = {
      name: { fullName: '张先生' },
      phoneNumbers: [{ phoneNumber: '13888888888' }],
      emails: [{ email: 'zhang@xxx.com' }],
      websites: [{ website: 'www.huawei.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)
  }
}

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"
  }
]
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 添加通讯录功能
20浏览 • 1回复 待解决
HarmonyOS 根据id查询联系人报错
42浏览 • 1回复 待解决
鸿蒙系统-代码如何实现添加联系人
11132浏览 • 1回复 待解决
如何跳转通讯录 、 打电话
1850浏览 • 1回复 待解决
如何拉起短信界面然后指定联系人
508浏览 • 2回复 待解决
如何拉起短信界面并指定联系人
1908浏览 • 1回复 待解决
HarmonyOS 通讯录与数据库问题
245浏览 • 1回复 待解决
HarmonyOS 点击图片按钮中间没反应
708浏览 • 1回复 待解决
HarmonyOS 通讯录相关功能布局实现
352浏览 • 1回复 待解决
鸿蒙系统-如何拉取联系人设置页面
18740浏览 • 1回复 待解决
三方应用可以读取联系人数据吗?
241浏览 • 1回复 待解决