¿Puede decirme cómo buscar grupos de contactos programáticamente almacenados en nuestro teléfono Android?Acceder a los nombres de los grupos de contactos de Android
8
A
Respuesta
9
final String[] GROUP_PROJECTION = new String[] {
ContactsContract.Groups._ID, ContactsContract.Groups.TITLE };
cursor = getContentResolver().query(
ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, null,
null, ContactsContract.Groups.TITLE);
GlobalConfig.groupList.clear();
Group g = new Group();
g.GroupIdList += "0";
g.setGroupTitle("ALL");
GlobalConfig.groupList.add(g);
while (cursor.moveToNext()) {
String id = cursor.getString(cursor
.getColumnIndex(ContactsContract.Groups._ID));
String gTitle = (cursor.getString(cursor
.getColumnIndex(ContactsContract.Groups.TITLE)));
if (gTitle.contains("Group:")) {
gTitle = gTitle.substring(gTitle.indexOf("Group:") + 6).trim();
}
if (gTitle.contains("Favorite_")) {
gTitle = "Favorites";
}
if (gTitle.contains("Starred in Android")
|| gTitle.contains("My Contacts")) {
continue;
}
Group gObj = new Group();
int pos = GlobalConfig.GroupContainsTitle(gTitle);
if (pos != -1) {
gObj = GlobalConfig.groupList.get(pos);
gObj.GroupIdList += "," + id;
GlobalConfig.groupList.set(pos, gObj);
} else {
gObj.GroupIdList += id;
gObj.setGroupTitle(gTitle);
GlobalConfig.groupList.add(gObj);
}
// Log.d("GrpId Title", gObj.getGroupIdList() +
// gObj.getGroupTitle());
}
5
La respuesta por @Abhi está bien, pero tiene algunos límites:
- contactos mostrará una lista de borrados
- mostrará una lista de grupos invisibles grupos
- mostrará una lista de 'fantasma' (es decir grupos que debería haber sido eliminado, pero aún se encuentran en el limbo)
-
private class GroupInfo {
String id;
String title;
@Override
public String toString() {
return title+ " ("+id+")";
}
public String getId() {
return id;
}
}
List<GroupInfo> groups = new ArrayList<GroupInfo>();
public void loadGroups() {
final String[] GROUP_PROJECTION = new String[] {
ContactsContract.Groups._ID,
ContactsContract.Groups.TITLE,
ContactsContract.Groups.SUMMARY_WITH_PHONES
};
Cursor c = getContentResolver().query(
ContactsContract.Groups.CONTENT_SUMMARY_URI,
GROUP_PROJECTION,
ContactsContract.Groups.DELETED+"!='1' AND "+
ContactsContract.Groups.GROUP_VISIBLE+"!='0' "
,
null,
null);
final int IDX_ID = c.getColumnIndex(ContactsContract.Groups._ID);
final int IDX_TITLE = c.getColumnIndex(ContactsContract.Groups.TITLE);
Map<String,GroupInfo> m = new HashMap<String, GroupInfo>();
while (c.moveToNext()) {
GroupInfo g = new GroupInfo();
g.id = c.getString(IDX_ID);
g.title = c.getString(IDX_TITLE);
int users = c.getInt(c.getColumnIndex(ContactsContract.Groups.SUMMARY_WITH_PHONES));
if (users>0) {
// group with duplicate name?
GroupInfo g2 = m.get(g.title);
if (g2==null) {
m.put(g.title, g);
groups.add(g);
} else {
g2.id+=","+g.id;
}
}
}
c.close();
}
1
No hay necesidad de antiguas respuestas exageradas. Solución mucho más simple aquí.
final String[] GROUP_PROJECTION = new String[] {
ContactsContract.Groups._ID, ContactsContract.Groups.TITLE };
Cursor gC = getContentResolver().query(
ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION,null,null,null);
gC.moveToFirst();
while (!gC.isAfterLast()) {
int idcolumn = gC.getColumnIndex(ContactsContract.Groups.TITLE);
String Id = gC.getString(idcolumn);
ArrayL.add(Id);
gC.moveToNext();
}
LinkedHashSet<String> s = new LinkedHashSet<String>();
s.addAll(ArrayL);
ArrayL.clear();
ArrayL.addAll(s);
+0
Gracias amigo! esto es más simple. – Darsh
+0
¿De dónde viene "ArrayL"? – retorquere
Cuestiones relacionadas
- 1. Excepción de seguridad de Android al acceder a los contactos
- 2. cómo acceder a los contactos en mi programa de Android
- 3. Obtener los contactos de Android
- 4. ¿alguna forma de acceder a los grupos coincidentes en acción?
- 5. ¿Cómo acceder a los grupos de contacto en Excel VBA?
- 6. Cómo leer los contactos sim de Android y los contactos telefónicos por separado
- 7. android - acceder a los activos de la aplicación de prueba
- 8. En Android, ¿cómo selecciona solo los contactos de TELÉFONO?
- 9. Acceder a los contenidos de res/raw programatically (Android)
- 10. Acceder a los archivos de recursos en Android
- 11. ¿Cómo acceder dinámicamente a los nombres de los elementos en XAML?
- 12. cómo eliminar todos los contactos en la lista de contactos en android mobile programáticamente
- 13. ¿Cómo se asignan los nombres de los paquetes de Hackage a los nombres de 'cabal install'?
- 14. Los conflictos entre los nombres de los miembros y los nombres de los argumentos de constructor
- 15. Cómo acceder a Contactos de Google usando OpenID en Ruby
- 16. cómo sincronizar los contactos del teléfono en Gmail en Android programmatically utilizando los contactos de Google api
- 17. "optimizando" el acceso a los cursores en Android: Posición vs Los nombres de columna
- 18. Manera eficiente de cargar todos los contactos y todos los números de teléfono (Android 2.0)
- 19. PowerShell: acorta los nombres del espacio de nombres para que sea más fácil acceder a los tipos
- 20. GNU awk: acceder a los grupos capturados en el texto de reemplazo
- 21. Android Lista de contactos
- 22. ¿Cómo puedo acceder a los recursos sin procesar en los proyectos de prueba de Android?
- 23. Acceder a contactos y obtener la dirección de correo electrónico
- 24. Lista de todos los usuarios y grupos
- 25. Tengo un SID de una cuenta de usuario y quiero los SID de los grupos a los que pertenece
- 26. FileNotFoundException mientras trata de convertir los contactos de vCard
- 27. existe contacto en los contactos
- 28. ¿Cómo obtener los contactos de usuario de gmail?
- 29. ¿Cómo acceder a los elementos de lista
- 30. Acceder a los recursos de JAR
Es una solución perfecta para mi pregunta. Pero, aquí no entiendo el uso de la clase GlobalConfig y la forma en que almacena el GroupContainsTitle dado. Entonces, @Abhishek puede aclarar más sobre la clase GlobalConfig. Me ahorrará tiempo. – Prativa
@prativa GlobalConfig es simplemente una clase estática simple que se usa aquí para almacenar colecciones estáticas a las que se puede acceder a través de la aplicación. – Abhi
¡Perfecto! ¿Por qué obtengo más de los mismos grupos? Obtengo p. Ej. 3 compañeros de trabajo y 2 amigos. – erdomester