uniapp app中如何获取用户通讯录权限

在uniapp开发的app中,如何获取用户通讯录权限?需要调用什么API或插件?获取权限后如何读取通讯录数据?在iOS和Android平台上实现方式是否有差异?求具体实现代码示例或详细步骤说明。

2 回复

在uniapp中获取通讯录权限,需使用plus.contacts.getAddressBook方法。先检查权限状态,若未授权则调用API请求授权。用户同意后即可读取通讯录数据。注意需在manifest.json中配置权限声明。


在 UniApp 中获取用户通讯录权限,需要使用 uni.authorizeuni.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 端实现通讯录权限的获取和联系人选择功能。

回到顶部