Accès aux noms de groupe de contacts Android

Pouvez-vous me dire comment chercher des groupes de contact stockés par programme dans notre téléphone Android?

  • Récepteur de contact Android avec uniquement les numéros de téléphone
  • Modifier le nom / le numéro de téléphone du contact par programme
  • Actions personnalisées dans l'application Contacts (similaire à G +)
  • Comment sécuriser les contacts de ma demande comme Facebook
  • Photo de contact Android: Comment récupérer (Google) une image de contact sur le Web (et donc, "annuler" un ancien changement d'image local)
  • Android - Comment obtenir un contact depuis le journal des appels?
  • Obtenir une photo de contact basée sur Contact PhoneNumber Android - Exemple de travail
  • Obtenir un numéro du sélecteur de contacts
  • 3 Solutions collect form web for “Accès aux noms de groupe de contacts Android”

    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()); } 

    La réponse de @Abhi est correcte mais a quelques limites:

    • Affichera les contacts supprimés
    • Liste les groupes invisibles
    • Liste les groupes «fantômes» (c'est-à-dire les groupes qui auraient dû être supprimés mais qui sont encore dans les limbes)

     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(); } 

    Pas besoin d'anciennes réponses exagérées. Une solution beaucoup plus simple ici.

     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); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.