Phonegap Contacts - 显示Phonenumbers时出错

时间:2014-04-17 15:25:24

标签: cordova contacts android-contacts

我正在使用phonegap,我的实际代码显示了我手机中每个联系人的姓名,但是当我想显示电话号码时,我显示“空”。有些联系人没有电话号码,例如谷歌联系人,但我只测试了一些保存了电话号码的联系人,并且也没有工作!

错误的确切是:“TypeError:无法读取null的属性'0'”。我理解错误,但我不明白为什么如果我测试了一个有电话号码的联系人,请告诉我。

我正在关注http://docs.phonegap.com/en/1.4.1/phonegap_contacts_contacts.md.html#ContactField

的官方教程

修改 已添加代码

function onDeviceReady() {
    // specify contact search criteria
    var options = new ContactFindOptions();
    options.filter = "pepepe";      // empty search string returns all contacts
    options.multiple = true;  // return multiple results
    filter = ["displayName"]; // return contact.displayName field    

    // find contacts
    navigator.contacts.find(filter, onSuccess, onError, options);
}

可能是过滤器var中的问题吗?

function onSuccess(contacts) {


for (var i=0; i<contacts.length; i++) {
    document.write(contacts[i].displayName);
    tlf=contacts[i].phoneNumbers;
    try{
    document.write(contacts[i].phoneNumbers[0].value);
    }
    catch(err){
    window.alert(err);
    }
    if (tlf== null){
    document.write("No hi han telefons");
    }else{
    document.write(contacts[i].phoneNumbers[0].value);
    }
    /*
    for (var j=0; j<contacts[i].phoneNumbers.length; j++) {
        document.write("Type: " + contacts[i].phoneNumbers[j].type + "\n" + 
                "Value: "  + contacts[i].phoneNumbers[j].value + "\n" + 
                "Preferred: "  + contacts[i].phoneNumbers[j].pref);
    }
    */
    document.write("<br/>");
}

};

编辑:如果注册了电话号码,总是会返回null,这很奇怪!

2 个答案:

答案 0 :(得分:3)

看起来您使用的是过时的文档。从您使用版本3.x的评论。以下是关于如何使用它的documentation

看起来现在的不同之处在于您必须指定希望能够使用它们的字段。

function onSuccess(contacts) {
    alert('Found ' + contacts.length + ' contacts.');
};

function onError(contactError) {
    alert('onError!');
};

// find all contacts with 'Bob' in any name field
var options      = new ContactFindOptions();
options.filter   = "Bob";
options.multiple = true;
var fields       = ["displayName", "name"]; //here you would add phoneNumbers
navigator.contacts.find(fields, onSuccess, onError, options);

或者,如果您想获得文档所说的所有字段:

  

contactFields值为“*”将返回所有联系人字段。

答案 1 :(得分:2)

嘿只是在继续之前检查对象是否为null。这帮助我解决了这个错误。

这是检查

if(contacts [i] .phoneNumbers!= null) {

..................... ......................

}