如何在android phonegap中实现联系人过滤器?

时间:2014-07-22 15:51:04

标签: android cordova phonegap-plugins android-contacts

我可以选择在我的应用程序中发送短信。因此,有一个文本框可以输入手机号码。如果用户输入号码,我需要动态填充已过滤的联系人。我只需要类似于手机联系人搜索条件。即,如果用户输入998,我需要根据给定的输入998显示已过滤的联系人列表。

要做到这一点,我使用了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 个答案:

答案 0 :(得分:2)

我已经从以下链接https://github.com/hazemhagrass/ContactPicker.git安装了Contact Picker插件,并在很小程度上修改了代码,

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 :(得分:1)

确实,您可以按电话号码进行过滤。你需要确定&#34; phoneNumbers&#34;字段名称列在要过滤的字段数组中。以下是我在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);
        }