uni-app中plus.contacts.getAddressBook 获取到的通讯录没有电话

uni-app中plus.contacts.getAddressBook 获取到的通讯录没有电话

只有部分人有电话,大部分(90%)只能获取到displayName,但phoneNumbers为0

通讯录里可以看到是有电话号码的,应该说所有通讯录的人都有电话号码,否则也不会加到通讯录里,但获取到的数据没有phoneNumbers请问是什么问题?

Image from dcloud

Image from dcloud

Image from dcloud

Image from dcloud


更多关于uni-app中plus.contacts.getAddressBook 获取到的通讯录没有电话的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

有人帮忙吗,更新了版本依然有这个问题

更多关于uni-app中plus.contacts.getAddressBook 获取到的通讯录没有电话的实战教程也可以访问 https://www.itying.com/category-93-b0.html


plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, addressbook => { addressbook.find([“displayName”, “phoneNumbers”], contacts => { list.value = contacts.map(e => { return { name: e.displayName || e.phoneNumbers[0].value, phone: e.phoneNumbers[0].value, } }) showList.value = JSON.parse(JSON.stringify(list.value)); }) })
试试这个 前段时间用过这个

我在ios也遇到过获取800多个联系人,就只有两个联系人有手机号,其他全是空。把“note”字段删除le就获取到了手机号,这是什么原因啊? plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, addressbook => { addressbook.find([“displayName”, “phoneNumbers”,“organizations”,“note”], contacts => {
})

在uni-app中使用plus.contacts.getAddressBook接口获取通讯录数据时,确实可能会遇到联系人信息不完整的情况,比如缺少电话号码。这通常是因为设备通讯录中某些联系人未填写电话号码或者应用没有相应的权限去访问这些详细信息。为了确保你能够正确处理这种情况,并在代码中体现出对缺失电话的处理,以下是一个示例代码案例:

// 检查并请求通讯录权限
function requestContactsPermission() {
    if (window.plus) {
        plus.android.requestPermissions(['android.permission.READ_CONTACTS'], function(event) {
            if (event.deniedAlways) {
                console.error('用户永久拒绝了通讯录权限');
            } else if (event.denied) {
                console.error('用户拒绝了通讯录权限');
            } else {
                console.log('通讯录权限已授予');
                getAddressBook();
            }
        });
    } else {
        console.error('当前环境不支持plus API');
    }
}

// 获取通讯录并处理联系人数据
function getAddressBook() {
    plus.contacts.getAddressBook({
        success: function(e) {
            var contacts = e.contacts;
            contacts.forEach(function(contact) {
                var name = contact.displayName || '';
                var phones = contact.phoneNumbers || [];
                
                if (phones.length === 0) {
                    console.log('联系人 ' + name + ' 没有电话号码');
                } else {
                    phones.forEach(function(phone) {
                        console.log('联系人 ' + name + ' 的电话号码: ' + phone.value);
                    });
                }
            });
        },
        fail: function(e) {
            console.error('获取通讯录失败: ' + JSON.stringify(e));
        }
    });
}

// 调用函数请求权限并获取通讯录
requestContactsPermission();

说明:

  1. 权限请求:首先,通过plus.android.requestPermissions方法请求通讯录访问权限。这一步是必要的,因为没有权限就无法访问通讯录数据。
  2. 获取通讯录:在成功获取权限后,调用plus.contacts.getAddressBook方法获取通讯录。
  3. 处理联系人数据:遍历获取到的联系人列表,检查每个联系人的电话号码是否存在。如果缺少电话号码,则输出相应的日志信息。

此代码示例假设你在一个支持plus API的环境中运行,比如DCloud的5+ App(HBuilderX打包的App)。如果是在其他环境(如Web端或不支持plus API的小程序),则需要采用其他方式处理通讯录访问。

回到顶部