鸿蒙原生contact.queryContacts通讯录查询实现
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": "需要访问通讯录以提供备份服务"
}