2010-11-02 14 views
5

Estoy escribiendo una aplicación de red social que tiene funcionalidad de sincronización de contactos. Tengo código de trabajo (de un ejemplo encontré here) que inserta contactos en v2.x en un adaptador de sincronización.Android 1.x Contacts.Extensions para un tipo de cuenta personalizada?

Sin embargo, el software Motorola Blur no reconoce los contactos 2.x (estoy usando una versión 2.2 Moto en un Droid X). Blur utiliza la API 1.x de contactos, pero tengo problemas para encontrar/comprender ejemplos de cómo usarla. This page muestra cómo consultar por nombre, pero quiero a) agregar yb) consultar por un tipo de cuenta personalizada (o potencialmente MIME).

El código v2 que estoy usando crea un nuevo contacto sin formato, crea un registro de datos "StructuredName" y luego un registro de datos de tipo MIME personalizado.

¿Cómo hago el equivalente en la 1.x API (nivel 3)? Creo que para eso es la clase Contacts.Extensions, pero la documentación no está clara en el mejor de los casos.

Respuesta

1

Las modificaciones de Motorola BLUR a los contactos tienen más que ver con la forma en que se administran las cuentas en el dispositivo y menos con los cambios en el proveedor de contenido. El verdadero problema cuando se trabaja con un dispositivo Motorola BLUR es que debe establecer ACCOUNT_NAME y ACCOUNT_TYPE en un valor que se adapte bien al dispositivo.

Motorola no es el único dispositivo para el que es un problema, ya que en mi trabajo he encontrado otros dispositivos cuyas aplicaciones de contactos no funcionan bien con registros que se agregan a cuentas personalizadas en el dispositivo.

Durante la instalación, deberá determinar en qué tipo de dispositivo se está ejecutando y luego determinar qué cuenta utilizará para almacenar sus contactos. He encontrado excepciones para los dispositivos Samsung Galaxy, HTC Sense y MOTOBLUR, para los cuales el uso de una cuenta de contacto personalizada no le permite trabajar con sus contactos en la aplicación de contacto (por ejemplo, puede agregarlos, pero no editarlos o no puede insertar nuevos registros en su cuenta).

No puedo compartir el código porque pertenece a mi trabajo, pero puedo decirle que si utiliza la siguiente cuenta para sus contactos en dispositivos MOTOBLUR funcionará. Los dispositivos Motorola en Verizon tienen una cuenta de asistente de copia de seguridad que funciona de maravilla y, de otro modo, uso la cuenta predeterminada de BLUR que parece funcionar bien.

Busque una cuenta en el dispositivo con el tipo com.motorola.android.buacontactadapter y un nombre de "Teléfono" y úselo. Si no está presente, busque una cuenta del tipo com.motorola.blur.service.bsutils.MOTHER_USER_CREDS_TYPE y úselo (con su nombre) y estará configurado en dispositivos Motorola.

Si compartes parte de tu código o un enlace al ejemplo al que hiciste referencia, me encantaría profundizar.

+0

El ejemplo que utilicé fue este: http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/ He encontrado (felizmente) que en BLUR> 2.2 (gingerbread +) la aplicación de contacto borroso encontrará y funcionará felizmente con mis contactos de API v2.x. Las versiones anteriores siguen siendo infelices. –

+0

Motorola aprendió el error de sus formas, las versiones recientes de BLUR (post stable4) funcionarán para usted.Lamentablemente, no actualizan los dispositivos más antiguos, por lo que solo el tiempo curará tus males. –

+0

Parece que el tiempo lo ha curado. Casi ninguna de mi base de usuarios ya está en <2.2. Voy a aceptar esta respuesta a pesar de que no probé este enfoque. Gracias por el esfuerzo que pones en ello. –

1

Para abordar el final de su pregunta:

Esta infraestructura es compatible únicamente para la estructura contactos 2.x, que es cuando la introdujeron.

Las aplicaciones de contactos OEM en dispositivos 1.X pueden funcionar o no de manera similar.

Cuestiones relacionadas