Acciones personalizadas en la aplicación Contactos (similar a G +)

Estoy creando una aplicación que me gustaría integrar con la aplicación de contactos / personas de Android. Configurar mi tipo de mime personalizado, un syncadapter, y un archivo contacts.xml que tiene un elemento ContactsDataKind.

Esto parece funcionar bien, pero parece que no es posible definir múltiples acciones por tipo de datos (en este caso, me gustaría que la gente pudiera ver el perfil de un contacto, así como enviarles un mensaje directamente.

La aplicación de G + parece manejar esto, pero no he podido averiguar cómo lo hicieron. Aquí hay una captura de pantalla de la integración de G + en People: http://i.imgur.com/QotHjDk.png

¡Gracias por tu tiempo!

Sólo tiene que agregar filas adicionales en la tabla ContactsContract.Data al insertar un contacto. Consulte "structure contacts.xml" en la documentación :

El elemento <ContactsDataKind> controla la visualización de las filas de datos personalizados de la aplicación en la interfaz de usuario de la aplicación de contactos. Tiene la siguiente sintaxis:

 <ContactsDataKind android:mimeType="MIMEtype" android:icon="icon_resources" android:summaryColumn="column_name" android:detailColumn="column_name"> 

Para cada una de ellas, la aplicación Contact ContactFragment de la aplicación agrega un DataViewEntry . Las entradas de lista actúan como los datos de un adaptador utilizado para crear la interfaz de usuario de detalles de contacto. Cuando se hace clic en una entrada que contiene una Intención, startActivity() se llama. Este intento se construye a partir del tipo MIME del elemento de datos y Uri.

 entry.intent = new Intent(Intent.ACTION_VIEW); entry.intent.setDataAndType(entry.uri, entry.mimetype); 

Por ejemplo, la aplicación G + tiene los siguientes es_contacts.xml :

 <ContactsDataKind android:summaryColumn="data2" android:detailColumn="data3" 

Y crea las filas así:

 ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference("raw_contact_id", i1) .withValue("mimetype", "vnd.android.cursor.item/vnd.googleplus.profile.comm") .withValue("data4", Integer.valueOf(14)) .withValue("data5", "hangout") .withValue("data3", context.getString(R.string.start_hangout_action_label)); ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference("raw_contact_id", i1) .withValue("mimetype", "vnd.android.cursor.item/vnd.googleplus.profile") .withValue("data4", Integer.valueOf(20)) .withValue("data5", "addtocircle") .withValue("data3", context.getString(R.string.add_to_circle_action_label)); 
  • Obtener contactos actualizados en Android para sincronización de contactos
  • Cómo agregar un enlace a mi aplicación desde el menú rápido de contactos
  • Cómo seleccionar contactos exclusivos de android
  • Buscar contacto por número de teléfono
  • ¿Cómo comprobar si un contacto en el libro de teléfonos android tiene whatsapp habilitado?
  • Cómo mostrar personalizado tipo contacto dentro de Contacto como WhatsApp android
  • En Android, ¿cómo seleccionas sólo contactos de PHONE?
  • Agregar nuevo contacto mediante la intención con varios números de teléfono
  • Referencia incorrecta a la tabla de contactos de la bandeja de entrada de SMS
  • Adición de un tipo de mime personalizado a los contactos de android
  • El permiso de Android 6.0 (Marshmallow) READ_CONTACTS permite leer el nombre del contacto cuando se deniega el permiso
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.