Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.