我可以选择在我的应用程序中发送短信。因此,有一个文本框可以输入手机号码。如果用户输入号码,我需要动态填充已过滤的联系人。我只需要类似于手机联系人搜索条件。即,如果用户输入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!');
}
答案 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);
}