uni-app 获取手机通讯录联系人

发布于 1周前 作者 caililin 来自 Uni-App

uni-app 获取手机通讯录联系人

目前api里只有添加联系人,没有看到获取手机通讯录联系人,这个怎么实现?

3 回复

通讯录选择联系人、可单选、多选、详情(ios):https://ext.dcloud.net.cn/plugin?id=9107

在uni-app中获取手机通讯录联系人,通常需要借助原生插件或者调用设备的API接口。由于uni-app本身并没有直接提供访问通讯录的API,因此我们需要使用plus.contacts对象(这是HBuilderX及5+ App特有的API)来实现这一功能。以下是一个简单的示例代码,演示如何在uni-app中获取手机通讯录联系人。

首先,确保你的项目是基于5+ App平台开发的,因为plus.contacts API是5+ App特有的。

1. 配置manifest.json

manifest.json中,你需要添加访问通讯录的权限配置:

"permissions": {
    "Contacts": {
        "desc": "你的应用需要访问通讯录"
    }
}

2. 获取通讯录联系人

在你的页面或组件中,使用以下代码来获取通讯录联系人:

// 引入必要的模块
const plus = window.plus;

export default {
    data() {
        return {
            contacts: []
        };
    },
    methods: {
        getContacts() {
            if (!plus.contacts) {
                console.error('当前环境不支持访问通讯录');
                return;
            }

            plus.contacts.findAll({
                onSuccess: (contacts) => {
                    // 处理获取到的联系人列表
                    this.contacts = contacts;
                    console.log('获取到的联系人列表:', contacts);
                },
                onFail: (e) => {
                    console.error('获取联系人失败:', e);
                }
            }, ['displayName', 'phoneNumber']); // 指定需要获取的字段,这里只获取显示名称和电话号码
        }
    },
    onLoad() {
        // 页面加载时请求访问通讯录权限并获取联系人
        plus.android.requestPermissions(['android.permission.READ_CONTACTS'], (event) => {
            if (event.deniedAlways) {
                console.error('用户永久拒绝访问通讯录权限');
            } else if (event.denied) {
                console.error('用户拒绝访问通讯录权限');
            } else {
                this.getContacts();
            }
        });
    }
};

注意事项

  1. 权限请求:在Android 6.0及以上版本中,需要在运行时请求权限。上述代码已经处理了权限请求的逻辑。
  2. 字段选择:在plus.contacts.findAll方法中,你可以指定需要获取的字段,以减少不必要的数据传输和处理。
  3. 错误处理:在实际应用中,应该添加更多的错误处理逻辑,以处理各种可能的异常情况。

上述代码提供了一个基本的框架,用于在uni-app中获取手机通讯录联系人。根据具体需求,你可能需要进一步处理和展示这些联系人信息。

回到顶部