2015-04-23 4 views
2

Я пытаюсь получить имя группы из имени контакта на основе строки. Я думал, что это будет более распространенный вопрос, но каждый ответ, который я видел в Google или здесь устарел, не имеет ответов или неправильно ответил, объясняя все о группах, кроме того, что задает реальный вопрос. Еще раз, как вы получаете имя группы контакта, в котором вы уже знаете имя контакта?Как получить имя группы от известного контакта

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
while (phones.moveToNext()) { 
    String contactname=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
    String contactgroup = "GET GROUP NAME FROM STRING"(contactname);  
} 

phones.close(); 
+0

Пытались ли вы получить список с [ContactsContract.Groups] (http://developer.android.com/reference /android/provider/ContactsContract.Groups.html) и идентификатор группы из контакта с [ContactsContract.CommonDataKinds.GroupMembership] (http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.GroupMembership.html)? – Ircover

ответ

1

Этот метод возвращает список заголовка группы дал имя контакта:

public List<String> getGroupsTitle(String name, Context context) { 

    List<String> groupsTitle = new ArrayList<>(); 

    String contactId = null; 

    Cursor cursorContactId = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
      new String[]{ContactsContract.CommonDataKinds.Phone.CONTACT_ID}, 
      ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + "=?", 
      new String[]{name}, 
      null); 

    if (cursorContactId.moveToFirst()) { 
     contactId = cursorContactId.getString(0); 
    } 

    cursorContactId.close(); 

    if (contactId == null) 
     return null; 

    List<String> groupIdList = new ArrayList<>(); 

    Cursor cursorGroupId = context.getContentResolver().query(
      ContactsContract.Data.CONTENT_URI, 
      new String[]{ContactsContract.Data.DATA1}, 
      String.format("%s=? AND %s=?", ContactsContract.Data.CONTACT_ID, ContactsContract.Data.MIMETYPE), 
      new String[]{contactId, ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE}, 
      null); 

    while (cursorGroupId.moveToNext()) { 
     String groupId = cursorGroupId.getString(0); 
     groupIdList.add(groupId); 
    } 
    cursorGroupId.close(); 

    Cursor cursorGroupTitle = getContentResolver().query(
      ContactsContract.Groups.CONTENT_URI, new String[]{ContactsContract.Groups.TITLE}, 
      ContactsContract.Groups._ID + " IN (" + TextUtils.join(",", groupIdList) + ")", 
      null, 
      null); 

    while (cursorGroupTitle.moveToNext()) { 
     String groupName = cursorGroupTitle.getString(0); 
     groupsTitle.add(groupName); 
    } 
    cursorGroupTitle.close(); 

    return groupsTitle; 
} 
+0

Вы закрепили этот вопрос. В базе данных контактов все еще есть много чего, но этот ответ помог не просто ответить на мой вопрос, но и дал мне небольшое представление о том, как перемещаться по нему, когда мне нужна группа Id, название и т. Д. Спасибо. – SmulianJulian