我正在使用"Cordova"为IOS和Android创建应用程序。我需要访问设备的联系人。我为此使用插件"org.apache.cordova.contacts"。
这是我用来执行此操作的代码部分,我得到了响应......
function ContactsCtrl($scope){
var options = new ContactFindOptions();
options.multiple = true;
options.filter = "Benoit";
var fields = ["displayName", "name", "nickname "];
navigator.contacts.find(fields, onSuccess, onError, options);
}
function onSuccess(contacts) {
var ret = '';
for (var i = 0; i < contacts.length; i++) {
for(x in contacts[i]){
ret += x+' :'+contacts[i][x]+"n";
}
}
$('#resultContact').html(html);
}
而回应:
rawId :null
displayName :Nasher
name :[object Object]
nickname :null
phoneNumbers :null
emails :null
...
...
问题 :"电子邮件"字段和"电话号码"字段始终为空(在Android和iOS上),但它们存在于"通讯录"中
有人有想法为什么?
我偶然发现了这个话题,因为在我的情况下,contact.displayName显示为null(我在contactFields中有displayName)。
将"name"添加到contactFields数组后,displayName被填充。
phonegap文档说:
联系人字段:用作搜索限定符的联系人字段。这 生成的联系人对象仅包含这些字段的值。 (DOMString[])[必填]
不要将emails
和phoneNumbers
字段添加到fields
数组。尝试:
var fields = ["displayName", "name", "nickname", "emails", "phoneNumbers"];