1

電話ギャップのウェブサイトのドキュメントに従ってコードを書きました`

// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// Cordova is ready
//
function onDeviceReady() {
    // find all contacts
    var options = new ContactFindOptions();

    var fields = ["displayName", "name"];
    navigator.contacts.find(fields, onSuccess, onError, options);
}

// onSuccess: Get a snapshot of the current contacts
//
function onSuccess(contacts) {
    for (var i=0; i<contacts.length; i++) 
    {
        console.log("Display Name = " + contacts[i].displayName);
      var element = document.getElementById('cont');

      element.innerHTML='<li><a href="#">' + contacts[i].displayName + '</a></li>';

    }
}

// onError: Failed to get the contacts
//
function onError(contactError) {
    alert('onError!');
}

</script>`

andriodエミュレーターでは正常に動作していますが、アプリケーションsamsung galaxy phoneをインストールすると、「null」が返されます。親切に助けてください。

4

3 に答える 3

2

奇妙な...私もnull...(Phonegapバージョン2.0を使用)

contacts[i].name.formattedの代わりにのようなものを使用することをお勧めしますcontacts[i].displayName


したがって、たとえば、を使用するcontacts[i].name.formattedと、コードは次のようになります。

// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// Cordova is ready
//
function onDeviceReady() {
    // find all contacts
    var options = new ContactFindOptions();

    var fields = ["displayName", "name"];
    navigator.contacts.find(fields, onSuccess, onError, options);
}

// onSuccess: Get a snapshot of the current contacts
//
function onSuccess(contacts) {

    var element = document.getElementById('cont'); 
    for (var i=0; i<contacts.length; i++) 
    {
        console.log("Display Name = " + contacts[i].name.formatted);                
        element.innerHTML='<li><a href="#">' + contacts[i].name.formatted + '</a></li>';    
    }
}

// onError: Failed to get the contacts
//
function onError(contactError) {
    alert('onError!');
}


で取得できるさまざまな情報は次のcontacts[i].nameとおりです。

  • contacts[i].name.givenName名を提供します

  • contacts[i].name.formattedフォーマットされた名前(名+姓)を提供します

  • contacts[i].name.middleNameミドルネームを提供します

  • contacts[i].name.familyNameファミリ名(名+姓)を提供します

  • contacts[i].name.honorificPrefix敬語の接頭辞を提供します

  • contacts[i].name.honorificSuffix敬語の接尾辞を提供します

お役に立てれば。

于 2012-10-17T12:16:52.793 に答える
1

これは、単純な解決策では複雑な問題です。1行のコードだけを追加しました

 options.filter=""; 
    options.multiple=true;
    var filter = ["*"];

それは完全なコードです

 <script type="text/javascript" charset="utf-8">

// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// Cordova is ready
//
function onDeviceReady() {
   // find all contacts
    var options = new ContactFindOptions();
    options.filter=""; 
    options.multiple=true;
    var filter = ["*"];
    navigator.contacts.find(filter, onSuccess, onError, options);


}

// onSuccess: Get a snapshot of the current contacts
//
function onSuccess(contacts) {
    var ele = document.getElementById("cont");
    var str = '<ul data-role="listview" >';
  for (var i=0; i<contacts.length; i++) {


       str=str + '<li>' + contacts[i].displayName + '</li>';
   }
   str = str + '</ul>';

  // ele.innerHTML = str;
}

// onError: Failed to get the contacts
//
function onError(contactError) {
    alert('onError!');
}

ちなみに、連絡先エントリごとにいくつかのnull値も表示されますが、正常に機能しています。

于 2012-10-19T14:54:25.790 に答える
0

iOSの可能性があります-http ://docs.phonegap.com/en/2.1.0/cordova_contacts_contacts.md.html#Contacts。ドキュメントによると、displayNameはそこではサポートされていません。Littmのアドバイスに従います。また、さまざまなプラットフォームで機能しないプロパティについて説明しているので、ここにリンクしているドキュメントも確認してください。

于 2012-10-17T14:11:23.887 に答える