Tengo una lista de contactos presentes en un dispositivo Android. Quiero buscar los groupIds asociados y GroupName de todos los contactos. He intentado usar ContactsContract.Groups._ID para obtener la ID, pero no puedo obtenerla. ¿Alguien puede proporcionarme otra forma de obtener el groupID de contacto?¿Cómo puedo obtener un groupId/GroupName de un contacto en Android?
Respuesta
Así es como lo hago. Probablemente pueda perder el tiempo y encontrar una solución más rápida al no hacer dos consultas.
La idea es obtener el ID de fila del grupo de la tabla de datos usando GroupMembership.GROUP_ROW_ID
. Cuando tiene la Id. De fila, la usa para consultar la tabla Grupos para obtener el nombre (Título) del grupo.
A menudo, el Groups.TITLE
no es un buen nombre y probablemente tendrá que formatearlo o buscar para encontrar algo mejor.
Aquí está el código para obtener Contact ID:
public long getGroupIdFor(Long contactId){
Uri uri = Data.CONTENT_URI;
String where = String.format(
"%s = ? AND %s = ?",
Data.MIMETYPE,
GroupMembership.CONTACT_ID);
String[] whereParams = new String[] {
GroupMembership.CONTENT_ITEM_TYPE,
Long.toString(contactId),
};
String[] selectColumns = new String[]{
GroupMembership.GROUP_ROW_ID,
};
Cursor groupIdCursor = mContext.getContentResolver().query(
uri,
selectColumns,
where,
whereParams,
null);
try{
if (groupIdCursor.moveToFirst()) {
return groupIdCursor.getLong(0);
}
return Long.MIN_VALUE; // Has no group ...
}finally{
groupIdCursor.close();
}
}
Y aquí está el código para obtener el título del grupo:
public String getGroupNameFor(long groupId){
Uri uri = Groups.CONTENT_URI;
String where = String.format("%s = ?", Groups._ID);
String[] whereParams = new String[]{Long.toString(groupId)};
String[] selectColumns = {Groups.TITLE};
Cursor c = mContext.getContentResolver().query(
uri,
selectColumns,
where,
whereParams,
null);
try{
if (c.moveToFirst()){
return c.getString(0);
}
return null;
}finally{
c.close();
}
}
un contacto puede en muchos grupos, ¿por qué no usas loop para este caso? – vuhung3990
@ vuhung3990 Seguro que puedes hacer eso, esta es solo la idea general. – giZm0
- 1. Cómo obtener todos los detalles de un contacto en Android
- 2. Android - ¿Cómo obtener un contacto del registro de llamadas?
- 3. Cómo obtener el número de un contacto del nombre de contacto en android
- 4. Android - Actualizar un contacto
- 5. ¿Cómo eliminar un contacto?
- 6. ¿Cómo puedo establecer un tono de llamada para un contacto individual en Android?
- 7. Cómo puedo obtener el nombre de contacto con su número
- 8. Cómo eliminar un contacto mediante programación en Android
- 9. Obtener cumpleaños para cada contacto en la aplicación de Android
- 10. Cómo obtener un número de contacto específico usando la Id. De contacto
- 11. Obtener el nombre de contacto dado un número de teléfono en Android
- 12. Android Obtenga un grupo de contacto por ID
- 13. ¿Cómo actualizar un contacto existente?
- 14. obtener contacto problema de rendimiento
- 15. Cómo crear un contacto mediante programación
- 16. ¿Cómo buscar el nombre de un contacto desde su número de teléfono en Android?
- 17. Android WebView contacto evento enlace
- 18. Recuperar un contacto en Outlook
- 19. Android ¿Cómo se detecta qué contacto cambió?
- 20. Android - Encontrar un contacto por nombre para mostrar
- 21. ¿Cómo puedo obtener corto [] de un ByteBuffer
- 22. ¿Cómo insertar la información de contacto en el contacto existente en Android 1.6?
- 23. Evento de contacto prolongado de Android
- 24. Obteniendo una foto de un contacto
- 25. Obtener ubicación de contacto original de UIPanGestureRecognizer
- 26. Insertar contacto en Android con ContactsContract
- 27. Recuperar número de teléfono de contacto de URI en Android
- 28. Diálogo personalizado de Android como 'Contacto rápido'
- 29. Cómo abrir una tarjeta de contacto en Android con ID
- 30. ¿Cómo puedo obtener un rastreo en Perl?
¿Has mirado en esto? Puede ayudar. http://stackoverflow.com/questions/3026750/android-2-0-contact-groups-manipulation –
giZm0 está en el camino correcto con la vista 'GroupMembership' ... tenga en cuenta que un contacto puede pertenecer a más de un grupo – eidylon