9

有没有办法只显示有电话号码的联系人?

现在我正在获取所有联系人,然后遍历每个联系人并找出他们的电话号码,但我想知道是否有办法将参数传递给contactFindOptions对象,以便它只获取具有电话号码的联系人?

这就是我的代码当前的样子:

var options = new ContactFindOptions();
options.filter=""; //Can i pass something here to pick only contacts with phone number
options.multiple=true; 
var fields = ["displayName", "phoneNumbers"];
navigator.contacts.find(fields, onSuccess, onError, options);


function onSuccess(contacts) {
    for (var i=0; i<contacts.length; i++) {
        console.log("Display Name = " + contacts[i].displayName);
        if(null != contacts[i].phoneNumbers)
            {
                for(var j=0;j<contacts[i].phoneNumbers.length;j++)
                {
                      console.log("Name = " + contacts[i].displayName);
                      console.log("Phone = " + contacts[i].phoneNumber[j].value);

                }
            }
    }
}
4

3 回答 3

1

这个插件看起来是最好的方法:https ://github.com/dbaq/cordova-plugin-contacts-phone-numbers 。

它只搜索带有电话号码的联系人。

于 2015-06-16T21:33:33.513 回答
1

是的,我们可以使用hasPhoneNumber过滤器选项。代码片段如下:

            var contactFindOptions = new ContactFindOptions();
            contactFindOptions.filter = "";
            contactFindOptions.multiple = true;
            contactFindOptions.hasPhoneNumber = true;
            navigator.contacts.find(
                    ["phoneNumbers"],
                    function (contacts) {
                       // you will get contacts in this callback success function
                    },
                    function (e) {
                        if (e.code === ContactError.NOT_SUPPORTED_ERROR) {
                           console.log("Searching for contacts is not supported.");
                        } else {
                            console.log("Search failed: error " + e.code);
                        }
                    },
                    contactFindOptions);

注意: hasPhoneNumber(仅限 Android):过滤搜索以仅返回通知了电话号码的联系人。(布尔值)(默认值:假)

于 2015-12-12T17:58:04.637 回答
0

我相信 Cordova API 不允许过滤来完成你所需要的。

从他们这里的文档:http: //docs.phonegap.com/en/2.5.0/cordova_contacts_contacts.md.html#contacts.find

它说:

在查询联系人数据库时,contactFindOptions.filter 字符串可用作搜索过滤器。如果提供,则对contactFields 参数中指定的每个字段应用不区分大小写的部分值匹配。如果在与任何指定字段的比较中找到匹配项,则返回联系人。

我不相信您可以使用它来确定电话号码字段的非空值。

于 2013-04-08T23:19:10.410 回答