使用phonegap(Cordova 2.0.0)开发Android应用程序。我需要检索设备联系人。我试过这个文档的代码
http://docs.phonegap.com/en/2.0.0/cordova_contacts_contacts.md.html#Contacts
我的代码如下
$("#shareoptions3").live('click',function(){
var options = new ContactFindOptions();
options.multiple = true;
var fields = ["displayName","phoneNumbers"];//["displayName", "name","phoneNumbers"];
navigator.contacts.find(fields, onContactSuccess, onContactError, options);
});
function onContactSuccess(contacts) {//alert(contacts.length);
for (var i=0; i<contacts.length; i++) {
// display phone numbers
for (var j=0; j<contacts[i].phoneNumbers.length; j++) {
alert("Type: " + contacts[i].phoneNumbers[j].type + "\n" +
"Value: " + contacts[i].phoneNumbers[j].value + "\n" +
"Preferred: " + contacts[i].phoneNumbers[j].pref);
}
}
};
// onError: Failed to get the contacts
//
function onContactError(contactError) {
console.log('Error in getting contacts!');
}
我在Logcat中收到消息:
成功回调错误:Contacts3 = TypeError:无法在file:///android_asset/www/JS/cordova-2.0.0.js阅读null的属性'length':258
请帮我解决这个问题。
答案 0 :(得分:6)
您的某个联系人可能没有电话号码,这就是为什么您会获得null
值而不是电话号码。
因此,在for
循环中,其中一个contacts[i].phoneNumbers.length
会产生错误。
我建议您在显示/提醒之前先检查phoneNumbers
是否为null
,然后使用:
if(contacts[i].phoneNumbers != null)
最后,你可以尝试这样的事情:
$("#shareoptions3").live('click',function(){
var options = new ContactFindOptions();
options.multiple = true;
var fields = ["displayName","phoneNumbers"];//["displayName", "name","phoneNumbers"];
navigator.contacts.find(fields, onContactSuccess, onContactError, options);
});
function onContactSuccess(contacts) {//alert(contacts.length);
for (var i=0; i<contacts.length; i++) {
// display phone numbers
if(contacts[i].phoneNumbers != null) // Checking if not null
for (var j=0; j<contacts[i].phoneNumbers.length; j++) {
alert("Type: " + contacts[i].phoneNumbers[j].type + "\n" +
"Value: " + contacts[i].phoneNumbers[j].value + "\n" +
"Preferred: " + contacts[i].phoneNumbers[j].pref);
}
}
};
// onError: Failed to get the contacts
//
function onContactError(contactError) {
console.log('Error in getting contacts!');
}
希望这有帮助,请告诉我这是否适合你。