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".
- Uncaught TypeError cuando se utiliza un JavascriptInterface
- JavaScript no funciona en Android WebView
- Navegador Android: cambia programaticamente el valor de entrada enfocado
- ¿Cómo implementar onclick en javascript y html para dispositivos con versiones inferiores de android?
- Cómo saber si el usuario de Android vino de la aplicación de pantalla de inicio
¿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.
- No se pueden obtener coordenadas de los eventos de JavaScript en dispositivos Android
- DOMException: play () sólo puede iniciarse mediante un gesto del usuario
- Descifrado Java y encriptación compatible con SJCL?
- Cómo implementar Google Tag Manager en Córdoba
- Cargar una foto de la biblioteca con el navegador web de Android
- Capturar la página redirecciona vía javascript en WebView de Android
- ¿Soporta Android WebKit postMessage () para la comunicación inter-marco?
- Cómo poblar webview en android con texto sin formato de base de datos y ser capaz de manejar caracteres de nueva línea
¿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.
- Android: uso de recursos de otro proyecto en mi área de trabajo
- Actividad de actualización de Android de la notificación