Ich habe eine Liste der Kontakte in einem Android-Gerät. Ich möchte die zugehörigen groupIds und GroupName aller Kontakte abrufen. Ich habe versucht, ContactsContract.Groups._ID zu verwenden, um die ID zu erhalten, aber ich kann sie nicht bekommen. Kann mir jemand eine andere Möglichkeit bieten, die Gruppen-ID des Kontakts zu erhalten?Wie kann ich eine GroupId/GroupName eines Kontakts in Android erhalten?
Antwort
So mache ich es. Sie können wahrscheinlich herumspielen und eine schnellere Lösung finden, indem Sie nicht zwei Abfragen ausführen.
Die Idee ist, die Zeilen-ID der Gruppe aus der Datentabelle mit GroupMembership.GROUP_ROW_ID
zu erhalten. Wenn Sie die Zeilen-ID haben, verwenden Sie diese, um die Groups-Tabelle abzufragen, um den Namen (Titel) der Gruppe zu erhalten.
Oft ist die Groups.TITLE
nicht so gut ein Name und Sie müssen wahrscheinlich formatieren oder suchen, um etwas besseres zu finden.
Hier ist der Code Kontakt-ID zu erhalten:
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();
}
}
Und hier ist der Code, der den Titel der Gruppe zu erhalten:
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();
}
}
ein Kontakt kann in vielen Gruppen, warum verwenden Sie nicht Schleife für diesen Fall? – vuhung3990
@ vuhung3990 Sicher kannst du das, das ist nur die allgemeine Idee. – giZm0
Haben Sie bei ausgesehen? Es kann helfen. http://stackoverflow.com/questions/3026750/android-2-0-contact-groups-manipulation –
giZm0 ist auf dem richtigen Weg mit der 'GroupMembership' Ansicht ... aber bedenken Sie, dass ein Kontakt zu mehr gehören kann als eine Gruppe. – eidylon