index.ets 文件

import contact from "@ohos.contact"
import { BusinessError } from "@kit.BasicServicesKit"
import { abilityAccessCtrl, common, Permissions, featureAbility } from "@kit.AbilityKit"
import { JSON } from "@kit.ArkTS"

读取联系人关键代码

获取前先动态申请权限,未授权则不获取。

 let context = this.getUIContext().getHostContext()

 const permissions: Array<Permissions> = ['ohos.permission.READ_CONTACTS']
        
 abilityAccessCtrl.createAtManager()
          .requestPermissionsFromUser(context, permissions).then(result => {

    console.log("authResults",JSON.stringify( result.authResults))
    if (result.authResults.includes(abilityAccessCtrl.GrantStatus.PERMISSION_DENIED)) 
       {
         console.log("用户未授权")
         return
       }

      contact.queryContacts(context, (err: BusinessError, data) => {
        if (err) {
          console.log(`err=>${err.code}`)
          return
        }
        console.log("data=>" + JSON.stringify(data))
      })
  })

module.json5 文件

这里读和写通讯录的权限都一起写了,避免后续用到又加麻烦。

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.READ_CONTACTS",
        "reason": "$string:contact_permission_reason",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.WRITE_CONTACTS",
        "reason": "$string:contact_permission_reason",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "always"
        }
      }
    ]
  }
}

$string:contact_permission_reason 定义在:entry\src\main\resources\base\element\string.json中

{
  "name": "contact_permission_reason",
  "value": "需要访问通讯录以提供备份服务"
}

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐