原创

MUI-读取手机通讯录

mui.plusReady(function () {
    getContactsFromPhone(function (contactsArr) {
    });
});

var contact_arr = []; //保存通讯录具体信息
/**
 * @param  callback contactsArr 数组:value: i, name:姓名,phone:手机号
 */
function getContactsFromPhone(callback) {
    //先清空变量,不要在方法内重复定义变量!
    contact_arr.splice(0, contact_arr.length);
    //提取用户手机联系人 传给数据源contact_arr
    plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, function (addressbook) {
        addressbook.find(["displayName", "phoneNumbers"], function (contacts) {
            for (var i = 0; i < contacts.length; i++) { //要不要分页查询?
                //contact_arr_text是contact_arr数据源中每一个item用于显示的值 此处为联系人名称+手机号
                //这里一定要判断联系人名称不为空 一旦漏判undefined后面所有逻辑都不会执行!!
                if (contacts[i] !== undefined && contacts[i].displayName !== undefined) {
                    //判断用户的手机号码不为空时 取手机号码
                    if (contacts[i].phoneNumbers[0] !== undefined) {
                        var contact_arr_name = contacts[i].displayName;
                        var contact_arr_phone = contacts[i].phoneNumbers[0].value;
                    }
                    //若手机号为空 则判断住宅号是否为空 不为空就用住宅号码 若住宅号码也为空 这个用户就不显示了
                    else if (contacts[i].phoneNumbers[1] !== undefined) {
                        var contact_arr_name = contacts[i].displayName;
                        var contact_arr_phone = contacts[i].phoneNumbers[1].value;
                    }
                }
                //console.log(JSON.stringify(contact_arr_text)); // "测试\t18226922502"
                //将数据传给数据源
                contact_arr[i] = {
                    value: i,
                    name: contact_arr_name.replace(' ', '').replace('-', ''),
                    phone: contact_arr_phone.replace(' ', '').replace('-', '')
                };
            }
            callback(contact_arr);
        }, false);
    }, function (e) {
        plus.ui.toast("未能获取到联系人数据!");
        callback(contact_arr);
    });
}
正文到此结束
本文目录