2013-02-12 92 views
9

有沒有辦法只顯示有電話號碼的聯繫人?PhoneGap - 只顯示電話號碼的聯繫人

現在我得到所有的聯繫人,然後通過每個循環,找出他們的電話號碼,但我想知道是否有辦法將參數傳遞給contactFindOptions對象,以便它只接收具有電話號碼的聯繫人?

這是我的代碼目前看起來像:

var options = new ContactFindOptions(); 
options.filter=""; //Can i pass something here to pick only contacts with phone number 
options.multiple=true; 
var fields = ["displayName", "phoneNumbers"]; 
navigator.contacts.find(fields, onSuccess, onError, options); 


function onSuccess(contacts) { 
    for (var i=0; i<contacts.length; i++) { 
     console.log("Display Name = " + contacts[i].displayName); 
     if(null != contacts[i].phoneNumbers) 
      { 
       for(var j=0;j<contacts[i].phoneNumbers.length;j++) 
       { 
         console.log("Name = " + contacts[i].displayName); 
         console.log("Phone = " + contacts[i].phoneNumber[j].value); 

       } 
      } 
    } 
} 

回答

0

我相信科爾多瓦API不允許過濾來完成你所需要的。

從他們的文檔在這裏:http://docs.phonegap.com/en/2.5.0/cordova_contacts_contacts.md.html#contacts.find

它說:

的contactFindOptions.filter字符串可以查詢通訊錄數據庫時,可以用作搜索過濾器。如果提供,則不區分大小寫的部分值匹配應用於contactFields參數中指定的每個字段。如果在與任何指定字段的比較中找到匹配項,則返回聯繫人。

我不相信你可以使用它來確定電話號碼字段非空。

2

是的,我們可以使用hasPhoneNumber過濾器選項。 代碼片段如下:

  var contactFindOptions = new ContactFindOptions(); 
      contactFindOptions.filter = ""; 
      contactFindOptions.multiple = true; 
      contactFindOptions.hasPhoneNumber = true; 
      navigator.contacts.find(
        ["phoneNumbers"], 
        function (contacts) { 
         // you will get contacts in this callback success function 
        }, 
        function (e) { 
         if (e.code === ContactError.NOT_SUPPORTED_ERROR) { 
          console.log("Searching for contacts is not supported."); 
         } else { 
          console.log("Search failed: error " + e.code); 
         } 
        }, 
        contactFindOptions); 

注: hasPhoneNumber(僅限Android):過濾搜索只告訴一個電話號碼返回聯繫人。 (布爾)(默認:false)

相關問題