Acceso a contactos en Android mediante Phonegap

Estoy trabajando en una aplicación usando la brecha telefónica. Estoy tratando de acceder a los contactos en el celular porque los usaré más tarde. Ahora estoy tratando de escribir un código para encontrar contactos en el móvil. Aquí está el archivo JS que estoy usando:

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); } 

Ninguna de las alertas se alertan, por lo que parece que algo está mal en el código (pero se alertó cuando eliminé la función "findContactByName".

¿Sabes si debo agregar algún tipo de plugins, o actualizar algo para que estas funciones puedan funcionar? Estoy trabajando con cordova versión 1.6.1 y he actualizado los permisos en el manifiesto para poder acceder a los contactos. Así que, ¿sabes lo que está mal con mi código y por qué no funciona?

Muchas gracias.

¿Está esperando el evento deviceready (PhoneGap cargado)?

El código siguiente funciona para mí para poner todos los contactos con un campo de nombre en una matriz de nombres:

 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'); } 

Estás trabajando con un viejo ejemplo:

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

No ha sido la forma correcta de llamar a los contactos para bastantes versiones. Utilizar:

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

en lugar.

  • Javascript máximo altura de la vista tras la orientación cambiar Android y iOS
  • Compruebe la conexión a Internet en Android WebView (Córdoba)
  • Renderizar imagen como flujo de datos en el navegador de Android
  • Sqlite sincrónico
  • Phonegap - Leer sub-directorios?
  • Navegador nativo de Android duplicando el lienzo HTML5 (fino en cromo)
  • React Native - Aplicación de Android que funciona en Debug, falla en la versión
  • Cómo ver la salida del registro de consola en la galaxia S2 de Samsung
  • JavaScript console.log () en dispositivos HTC Android y adb logcat
  • Un simple ejemplo androide de Córdova incluyendo Sqlite leer / escribir y buscar
  • Detectar clic en el botón HTML a través de javascript en Android WebView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.