Android vcard cadena para contactar

Me estoy preguntando si hay una manera limpia de importar un vcard como contacto del androide. Tengo un analizador de vcard, pero el mapeo de cada posible campo de vcard y tipo de campo va a ser un ejercicio doloroso, propenso a errores. Hay una mejor manera?

Un contacto de android parece sospechosamente como un vcard, así que sospecho que utilizan vcards internamente. No hay API pública para esto sin embargo.

Un contacto de android parece sospechosamente como un vcard, así que sospecho que utilizan vcards internamente.

Creo que es mucho más complicado que usar 'vCards internamente', especialmente como vCard es efectivamente sólo un formato de archivo de texto por lo que es ineficiente para almacenar y más para buscar un gran número de ellos.

La visión general de ContactsContract (nota I cortar en el punto que menciona 'tres niveles de datos del modelo') …

Visión de conjunto

ContactsContract define una base de datos extensible de información relacionada con el contacto. La información de contacto se almacena en un modelo de datos de tres niveles:

Por lo que puedo decir hay una manera de "extraer" una vCard relativa a un contacto individual, pero no sé de uno para crear un contacto de una vCard.

EDIT: WRT importar vCards al hacer clic en un enlace en un navegador – sí, buen punto. Puedo confirmar que funciona al recibir una vCard por Bluetooth al menos (que es, por supuesto, bastante lógico). Si abro la tarjeta vCard en mi teléfono, obtendré un 'selector' que me pregunte si quiero usar 'File Editor' o 'People' (la aplicación de contactos HTC – no estoy seguro si se llama igual en otros teléfonos). Si sólo hay una vCard, entonces importa sin más indicaciones. Si hay más de uno, obtengo otro selector preguntando si quiero importar uno / varios / todos (Multiple da otro selector con casillas de verificación para hacer mi selección).

En teoría supongo, podría ser posible tener toda una carga de archivos .vcf descargados en un directorio en algún lugar y escribir algún código que simplemente crea un intento de "abrir" uno de ellos y usarlo con startActivity () sin especificar qué actividad usar. No estoy seguro de qué acción de intención se estaría utilizando aquí, pero empezaría con ACTION_VIEW – otras opciones podrían ser ACTION_EDIT o (tenuously) ACTION_RUN.

Aunque esto puede funcionar en un entorno conocido en particular como uno fuera, es un poco desordenado y el comportamiento / resultados pueden variar con diferentes teléfonos, versiones de Android y aplicaciones de contactos.

EDIT2: WRT a usar una intención de procesar archivos .vcf, sólo lo he probado desde mi tarjeta SD – no tengo ni idea de cómo hacerlo sin guardarlo primero. Lo siguiente reproduce exactamente lo que veo cuando abro una vCard que se envía a través de Bluetooth …

Intent i = new Intent(); i.setAction(android.content.Intent.ACTION_VIEW); i.setDataAndType(Uri.parse("file:///mnt/sdcard/downloads/bluetooth/MickeyMouse.vcf"), "text/x-vcard"); startActivity(i); 

He luchado mucho por la importación de contactos como una vCard en Android y después de pasar mucho tiempo llegué a no hay API pública para la importación de contactos.

La única manera en mi conocimiento es reutilizar el código fuente del Android. Logré lo mismo al volver a usar el código fuente de Android 2.1.

Los archivos pueden ser

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/pim/vcard/exception/VCardException.java/

En el explorador del lado derecho encontrará todos los archivos necesarios en la carpeta pim. El archivo que será responsable de iniciar el procedimiento es ImportVCardActivity.java

¡¡Espero que ayude!!

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