uniapp app中如何获取用户通讯录权限
在uniapp开发的app中,如何获取用户通讯录权限?需要调用什么API或插件?获取权限后如何读取通讯录数据?在iOS和Android平台上实现方式是否有差异?求具体实现代码示例或详细步骤说明。
2 回复
在 UniApp 中获取用户通讯录权限,需要使用 uni.authorize 和 uni.chooseContact API,并遵循以下步骤:
1. 权限配置
在 manifest.json 文件中添加通讯录权限声明:
{
"app-plus": {
"permissions": [
"contacts"
]
}
}
2. 请求权限
使用 uni.authorize 请求通讯录权限:
uni.authorize({
scope: 'scope.contact',
success: () => {
console.log('通讯录权限授权成功');
// 授权成功后执行后续操作
},
fail: (err) => {
console.log('通讯录权限授权失败', err);
// 处理授权失败情况
}
});
3. 选择联系人
授权成功后,使用 uni.chooseContact 选择联系人:
uni.chooseContact({
success: (res) => {
console.log('选择的联系人信息:', res);
// 返回联系人姓名和电话号码
},
fail: (err) => {
console.log('选择联系人失败', err);
}
});
注意事项:
- 平台差异:仅 App 端支持,H5 和小程序端不可用。
- 用户授权:首次调用时会弹出权限请求框,用户需手动同意。
- 权限拒绝处理:若用户拒绝,可引导用户手动开启(设置 → 应用权限)。
完整示例:
// 请求通讯录权限并选择联系人
function getContactPermission() {
uni.authorize({
scope: 'scope.contact',
success: () => {
uni.chooseContact({
success: (res) => {
console.log('联系人姓名:', res.name);
console.log('电话号码:', res.phone);
},
fail: (err) => {
console.log('选择失败:', err);
}
});
},
fail: () => {
uni.showModal({
title: '权限提示',
content: '需要通讯录权限才能选择联系人,请前往设置开启',
showCancel: false
});
}
});
}
通过以上步骤,即可在 UniApp App 端实现通讯录权限的获取和联系人选择功能。


