У меня есть список контактов, присутствующих на устройстве Android. Я хочу получить связанные groupIds и GroupName всех контактов. Я пытаюсь использовать ContactsContract.Groups._ID для получения идентификатора, но я не могу его получить. Может ли кто-нибудь предоставить мне другой способ получить контакт группы?Как я могу получить groupId/GroupName контакта в Android?
6
A
ответ
7
Вот как я это делаю. Вероятно, вы можете столкнуться и найти более быстрое решение, не выполняя два запроса.
Идея состоит в том, чтобы получить идентификатор строки группы из таблицы данных, используя GroupMembership.GROUP_ROW_ID
. Когда у вас есть идентификатор строки, вы используете это для запроса таблицы групп, чтобы получить имя (Название) группы.
Часто Groups.TITLE
не так уж хорошо, и вам, вероятно, придется отформатировать его или найти вокруг, чтобы найти что-нибудь лучше.
Вот код, чтобы получить идентификатор контакта:
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();
}
}
А вот код, чтобы получить Название группы:
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();
}
}
Вы смотрели на это? Это может помочь. http://stackoverflow.com/questions/3026750/android-2-0-contact-groups-manipulation – 2011-01-21 05:20:59
giZm0 находится на правильном пути с представлением `GroupMembership` ... помните, что контакт может принадлежать более чем одна группа. – eidylon 2013-01-31 20:52:54