2014-07-22 86 views
1

我可以在我的應用程序中發送短信。所以有一個文本框輸入手機號碼。如果用戶輸入號碼,我需要動態填充已過濾的聯繫人。我只需要類似於手機聯繫人搜索條件。即,如果用戶鍵入998,我需要根據給定的輸入998顯示已過濾的聯繫人列表。如何在android phonegap中實現聯繫人過濾器?

要做到這一點,我使用了navigator.contacts.find(),使用此方法我可以獲取和查找特定的聯繫人。但不是動態的搜索標準。

這是我的文本框,

<input name="" id="numberTxt" placeholder="Enter A Mobile Number" value="" type="tel" data-mini="true"> 

如果用戶鍵入任意數量的打字時我需要顯示過濾號碼。這可能嗎?如果是的話,我該怎麼做?任何額外的插件都需要?任何建議,

function onDeviceReady() { 
    var options = new ContactFindOptions(); 
    options.filter = "";   
    options.multiple = true;  
    filter = ["displayName", "name"]; 
    navigator.contacts.find(filter, onSuccess, onError, options); 
} 

function onSuccess(contacts) { 
     for (var i = 0; i < contacts.length; i++) { 
      console.log("Display Name = " + contacts[i].displayName); 
     } 
} 

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

回答

2

我已經安裝從下面的鏈接,https://github.com/hazemhagrass/ContactPicker.git的聯繫人選擇器插件和修改的代碼的代碼小程度等,

window.plugins.ContactPicker.chooseContact(function(contactInfo) { 
     var contactNumber = contactInfo.mobileNumber; 
     document.getElementById("numberTxt").value= contactNumber ; 
    }); 

我已經添加了mobileNumber參數contactInfo對象,這樣我能夠從通訊錄中獲取任何聯繫電話號碼並在HTML中使用。

ContactPicker.js修改後的代碼,

cordova.exec(function(contactInfo) { 
     newContantInfo = { 
      displayName: contactInfo.displayName, 
      email: contactInfo.email, 
      mobileNumber:contactInfo.mobileNumber, //included the mobile Number parameter 
      phones: [] 
     }; 
     for (var i in contactInfo.phones) { 
      if (contactInfo.phones[i].length) 
      newContantInfo.phones = newContantInfo.phones.concat(contactInfo.phones[i]); 
     }; 
     success(newContantInfo); 
    }, failure, "ContactPicker", "chooseContact", []); 

在ContactPickerPlugin.java,

contact.put("email", email); 
    contact.put("displayName", name); 
    contact.put("mobileNumber", mobileNumber); // included the mobile Number in contact object 
    contact.put("phones", phones); 
1

確實,在通過電話號碼過濾本國貨幣後,您需要確保「phoneNumbers」字段名稱在您要過濾的字段數組中列出。以下是我在Android上通過電話號碼進行過濾測試的一個示例。

document.getElementById('searchContactsButton').onclick = function(e){ 
      var options = new ContactFindOptions(); 
      options.filter = document.getElementById('searchInput').value; 
      options.multiple = true; 
      var fieldsToFilter = ["phoneNumbers"]; 
      navigator.contacts.find(fieldsToFilter, 
      function(contacts) { 
       alert('found ' + contacts.length + ' contacts'); 
      }, function(contactError) { 
       alert('error: ' + contactError); 
      }, options); 
     } 
+0

我並不需要檢查聯繫人是否存在與否。在按鍵的同時輸入手機號碼,我需要顯示匹配的模式。就像如果我鍵入998它應該自動顯示具有998號碼的聯繫人。我應該怎麼做?任何想法 ? – Vinod

+0

您可以嘗試向輸入元素添加事件處理程序,並偵聽「更改」或「輸入」事件。從而啓動您的功能,可以過濾設備上的聯繫人。 –

相關問題