有没有办法只显示有电话号码的联系人?
现在我正在获取所有联系人,然后通过每个联系人循环并查找他们的电话号码,但我想知道是否有办法将参数传递给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);
}
}
}
}
答案 0 :(得分:2)
是的,我们可以使用 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):过滤搜索以仅返回通知电话号码的联系人。 (布尔值)(默认值:false)
答案 1 :(得分:1)
这个插件看起来是最好的方法:https://github.com/dbaq/cordova-plugin-contacts-phone-numbers。
它仅搜索带有电话号码的联系人。
答案 2 :(得分:0)
我相信Cordova API不允许过滤来完成您的需要。
从他们的文档:http://docs.phonegap.com/en/2.5.0/cordova_contacts_contacts.md.html#contacts.find
它说:
在查询联系人数据库时,contactFindOptions.filter字符串可用作搜索过滤器。如果提供,则对contactFields参数中指定的每个字段应用不区分大小写的部分值匹配。如果在与任何指定字段进行比较时找到匹配项,则返回联系人。
我不相信你可以用它来确定电话号码字段的非空值。