问题描述
|
我想检索联系人详细信息以及它所属的组。我得到了列出电话中所有联系人组的代码。
Cursor groupC = getContentResolver().query(
ContactsContract.Groups.CONTENT_URI,null,null);
while (groupC.movetoNext()) {
String groupid =
groupC.getString(groupC.getColumnIndex(ContactsContract.Groups._ID));
Log.e(\"mytag\",groupid);
String grouptitle =
groupC .getString(groupC.getColumnIndex(ContactsContract.Groups.TITLE));
Log.e(\"mytag\",grouptitle);
}
groupC.close();
然后,我尝试使用其ID查询特定联系人,但始终显示“ 1”。
Cursor groupC = getContentResolver().query(
ContactsContract.Groups.CONTENT_URI,ContactsContract.Contacts._ID+\"= ?\",new String[]{id},null);
id在哪里
Cursor cur = cr.query(
ContactsContract.Contacts.CONTENT_URI,null);
id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
如何使用特定的联系人ID来查询组?
解决方法
我找到了答案。我们应该传递原始的contact-id和正确的mime类型。
String where = ContactsContract.Data.RAW_CONTACT_ID
+ \"=\"
+ Integer.parseInt(id)
+ \" AND \"
+ ContactsContract.Data.MIMETYPE
+ \"=\'\"
+ ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE
+ \"\'\";
Cursor cursor = ctx
.getContentResolver()
.query(ContactsContract.Data.CONTENT_URI,null,where,null);
startManagingCursor(cursor);
Log.e(\"Count is:\",\"\"+ cursor.getCount());
while (cursor.moveToNext()) {
groupid = cursor
.getString(cursor.getColumnIndex(ContactsContract.Data.DATA1));
Log.e(\"groupid\",groupid);
builder.append(groupid);
}String where = ContactsContract.Data.RAW_CONTACT_ID
+ \"=\"
+ Integer.parseInt(id)
+ \" AND \"
+ ContactsContract.Data.MIMETYPE
+ \"=\'\"
+ ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE
+ \"\'\";
Cursor cursor = ctx
.getContentResolver()
.query(ContactsContract.Data.CONTENT_URI,groupid);
break;
}
一个联系人可能在一个以上的组中,在此它首先返回其第一组。
我认为这可能对某人有用...