Доступ к контактам на Android с помощью Phonegap

Я работаю над приложением, использующим телефонный зазор. Я пытаюсь получить доступ к контактам на мобильном телефоне, я буду использовать их позже. Теперь я пытаюсь написать код для поиска контактов на мобильном телефоне. Вот файл JS, который я использую:

alert('Starting JS'); var TAP = ('ontouchend' in window) ? 'touchend' : 'click'; alert('I entered the function'); document.addEventListener('DOMContentLoaded', function () { alert('I entered the second function'); x$('#friendSubmit').on(TAP, function () { var filter = x$('#friendName')[0].value; alert('I entered the third function'); if (!filter) { alert('Cant find contacts'); // no contents return; } else { findContactByName(filter, function (contacts) { alert(contacts.length + ' contact(s) found matching "' +filter + '"'); } ); } }); }); function findContactByName(name, callback) { function onError() { alert('Error: unable to read contacts'); }; var fields = ["displayName", "name"], options = new ContactFindOptions(); options.filter = name; options.multiple = true; // find contacts navigator.service.contacts.find(fields, callback, onError, options); } 

Ни одно из предупреждений не предупреждается, поэтому кажется, что что-то не так в коде (но оно было предупреждено, когда я удалил функцию «findContactByName».

Знаете ли вы, если я должен добавить какие-либо плагины или обновить что-нибудь, чтобы эти функции могли работать? Я работаю с кордовой версией 1.6.1, и я обновил разрешения в манифесте, чтобы иметь возможность доступа к контактам. Итак, вы знаете, что не так с моим кодом и почему он не работает?

Большое спасибо.

Ожидаете ли вы событие deviceready (загружено PhoneGap)?

Следующий код помогает мне поместить все контакты с полем имени в массив имен:

 function onDeviceReady() { // specify contact search criteria var options = new ContactFindOptions(); options.filter=""; // empty search string returns all contacts options.multiple=true; // return multiple results filter = ["displayName"]; // return contact.displayName field // find contacts navigator.contacts.find(filter, onSuccess, onError, options); } var names = []; // onSuccess: Get a snapshot of the current contacts // function onSuccess(contacts) { for (var i=0; i<contacts.length; i++) { if (contacts[i].displayName) { // many contacts don't have displayName names.push(contacts[i].displayName); } } alert('contacts loaded'); } 

Вы работаете над старым примером:

 navigator.service.contacts.find(fields, callback, onError, options); 

Не был правильным способом вызвать контакты для нескольких выпусков. Использование:

 navigator.contacts.find(fields, callback, onError, options); 

вместо.