Android 如何使用phonegap 2.0.0获取设备联系人?

Android 如何使用phonegap 2.0.0获取设备联系人?,android,cordova,Android,Cordova,我正在使用phonegap(Cordova 2.0.0)开发一个android应用程序。我需要检索设备联系人。我已经试过了这个文档的代码 我的代码如下 $("#shareoptions3").live('click',function(){ var options = new ContactFindOptions(); options.multiple = true; var fields = ["displayName","phoneNumbe

我正在使用phonegap(Cordova 2.0.0)开发一个android应用程序。我需要检索设备联系人。我已经试过了这个文档的代码

我的代码如下

$("#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!');
}
$(“#共享选项3”).live('click',function(){
var options=new ContactFindOptions();
options.multiple=true;
变量字段=[“displayName”、“PhoneNumber”];//[“displayName”、“name”、“PhoneNumber”];
查找(字段、onContactSuccess、onContactError、选项);
});
函数onContactSuccess(contacts){//alert(contacts.length);

对于(var i=0;i您的一个联系人可能没有电话号码,这就是为什么您会得到一个
null
值而不是电话号码

因此,在
for
循环中,
联系人[i].phoneNumbers.length
中的一个将生成错误

我建议您先检查
电话号码
是否为
,然后再使用以下方法显示/提醒它:

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!');
}
$(“#共享选项3”).live('click',function(){
var options=new ContactFindOptions();
options.multiple=true;
变量字段=[“displayName”、“PhoneNumber”];//[“displayName”、“name”、“PhoneNumber”];
查找(字段、onContactSuccess、onContactError、选项);
});
函数onContactSuccess(contacts){//alert(contacts.length);

对于(var i=0;iHi!当您尝试应用程序时,您的设备中是否有联系人?@Littm:是的,我正在获取总的联系人数。(//alert(contacts.length);)我的意思是
alert(contacts.length)
是否为您提供了
0
?@Littm 2:不,我正在获取类似29的警报消息。我的设备中有29个联系人。