2012-10-11 24 views
2

正在開發一個使用phonegap(科爾多瓦2.0.0)的android應用程序。我需要檢索設備聯繫人。我曾與代碼試圖給出這個文檔如何使用phonegap 2.0.0獲取設備聯繫人?

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的是這樣的:

Error in success callback: Contacts3 = TypeError: Cannot read property 'length' of null at file:///android_asset/www/JS/cordova-2.0.0.js:258

請幫我理清這個問題。

+0

嗨!當您嘗試使用應用時,您的設備中是否有任何聯繫? – Littm

+0

@ Littm:是的,我得到了總數。 contact count ..(in line //alert (contacts.length); ) – tilak

+0

我的意思是'alert(contacts.length)'給你'0'? – Littm

回答

6

您的某個聯繫人可能沒有電話號碼,這就是爲什麼您會得到null值而不是電話號碼。

因此,在您的for循環中,其中一個contacts[i].phoneNumbers.length會生成錯誤。

我建議你先檢查phoneNumbersnull與否,顯示/報警之前,通過使用:

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!'); 
} 

希望這可以幫助,讓我知道如果這對你有用。

相關問題