2

phonegap(Cordova 2.0.0)を使用してAndroidアプリケーションを開発しています。デバイスの連絡先を取得する必要があります。このドキュメントを指定してコードを試しました

http://docs.phonegap.com/en/2.0.0/cordova_contacts_contacts.md.html#連絡先

次のように私のコード

$("#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:258 で null のプロパティ '長さ' を読み取ることができません

この問題を解決するのを手伝ってください。

4

1 に答える 1

6

連絡先の1つに電話番号がない可能性があるため、null電話番号の代わりに値を取得します。

したがって、forループ内で、contacts[i].phoneNumbers.lengthウィルの1つがエラーを生成します。

表示/警告する前に、次を使用して、がそうで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!');
}

これがお役に立てば幸いです。これでうまくいくかどうか教えてください。

于 2012-10-11T09:26:29.587 に答える