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.

2 Solutions collect form web for “Acceso a contactos en Android mediante Phonegap”

¿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.

  • Marcador de Smartphone
  • Recoge la versión de Android en el navegador por Javascript
  • Android Webview: Ejecución de javascript desde el método java llamado desde javascript
  • Ocultar imágenes que no se han cargado
  • Cómo detectar el contacto del usuario con el espacio telefónico usando JS
  • ¿Cuál es su experiencia con las webapps de Android (limitaciones, sugerencias y prácticas recomendadas)?
  • Los eventos de toque del navegador Android detienen la visualización que se actualiza. Lienzo / elementos - ¿Cómo trabajar?
  • Compruebe la conexión a Internet en Android WebView (Córdoba)
  • ¿Cómo podemos ejecutar una función javascript y obtener un valor de retorno en nuestra aplicación android?
  • Dropdowns de Bootstrap de Twitter Unclickable en tabletas
  • No se puede actualizar la vista, el enlace de datos no funciona - Angularjs y PhoneGap
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.