Phonegap contact.save duplicate phoneNumbers cuando actualiza un contacto

Tengo un problema con Phonegap contacts.save. Cuando creo un contacto funciona perfectamente en iOS y Android, pero, cuando intento actualizar un contacto, hay archivos duplicados como phoneNumbers, correos electrónicos, urls, ims, direcciones, estoy usando Phonegap 2.1 y Xcode 4.5.1.

¿Alguien podría ayudarme a resolver este problema ?. Aprecio tu tiempo. Gracias.

En resumen:

  • Navigator.contacts.create (); Funciona correctamente.
  • Cuando trato de actualizar un contacto, guardar correctamente, pero, agregar números de teléfono en lugar de actualizar.

Mi código es:

var options = new ContactFindOptions(); options.filter = 20; //just it's an example. Looking for id 20. var fields = ['id']; var contact; navigator.contacts.find(fields,function(contacts){ if (contacts.length==0) contact = navigator.contacts.create(); else contact = contacts[0]; var tContactName = new ContactName(); tContactName.givenName = 'Name'; tContactName.LastName = 'LastName'; contact.name = tContactName; var tPhoneNumbers[2]; tPhoneNumbers[0] = new ContactField('work', '123456789012',true); tPhoneNumbers[1] = new ContactField('home', '120987654321', false); contact.phoneNumbers = tPhoneNumbers; contact.save(function(contact) { navigator.notification.alert('Saved sucessfully!!!',function(){},'Title'); }, function(contactError) { navigator.notification.alert('Error contact save: '+contactError.code,function(){},'Title'); } }, function(contactError) { navigator.notification.alert('Error contact find: '+contactError.code,function(){},'Title'); }, options); 

El código funciona exactamente cómo se debe de acuerdo con la especificación de contacto del W3C. Eso no significa que tenga sentido aunque 🙂

De todos modos, al crear una nueva matriz de números de teléfono y establecer que sea igual a la propiedad contact.phoneNumbers en efecto, está agregando números de teléfono al contacto. Si desea editar o reemplazar los números de teléfono existentes, debe solicitar los números de teléfono como parte de sus "campos". A continuación, tendrá que recorrer los números de teléfono existentes y editarlos como mejor le parezca.

Yup, es contra-intuitivo pero eso es el api de W3C para usted.

Debe asignar valor al campo de contacto de números de teléfono ya creado en lugar de crear nuevo valor nuevo para los números de teléfono utilizando el nuevo ContactField .

Así que aquí está el ejemplo para actualizar los números de teléfono,

 contact.tphoneNumbers[0].value = 123456789012 contact.tphoneNumbers[1].value = 120987654321 

Entonces en lugar de usar contact.phoneNumbers = tPhoneNumbers; En la actualización que directamente llamar al método de guardar y eso es todo.

  • JQuery indicador de actividad móvil no se muestra en android
  • Cómo obtener número de serie desde Android Mobile Browser utilizando Java Scripting que será de la fuente de la aplicación web que se ejecuta en el navegador móvil
  • Archivos locales de Android WebView + AJAX
  • Instalación de Phonegap / Cordova 3.1 plugins (código de barras)
  • ¿Cómo comprobar si google.navigation intent / url scheme es compatible desde dentro de una aplicación web?
  • Android / phonegap - Tiempo de respuesta del clic lento
  • ¿Existe un límite de longitud de la clave (cadena) en el objeto JS?
  • Phonegap versión 3 phonegap.js no encontrado
  • El enfoque de la ventana y los eventos de desenfoque no funcionan correctamente en el navegador de Android
  • ¿Es posible construir una aplicación Android con PhoneGap estrictamente dentro de Visual Studio?
  • Cómo deshabilitar completamente el teclado virtual para todas las entradas en la vista web de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.