【问题标题】:Retrieving group of particular contact检索特定联系人组
【发布时间】:2011-08-31 19:07:46
【问题描述】:

我想检索联系人详细信息及其所属的组。我得到了列出手机中所有联系人组的代码。

Cursor groupC = getContentResolver().query(
    ContactsContract.Groups.CONTENT_URI, null, null, 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 查询特定联系人,但它始终显示There is no such column...

Cursor groupC = getContentResolver().query(
    ContactsContract.Groups.CONTENT_URI,
    null,
    ContactsContract.Contacts._ID+"= ?",
    new String[]{id},
    null);

id 在哪里

Cursor cur = cr.query(
    ContactsContract.Contacts.CONTENT_URI,
    null,
    null,
    null,
    null);
id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));

如何使用特定的联系人 id 查询群组?

【问题讨论】:

    标签: android android-contacts


    【解决方案1】:

    我找到了答案。我们应该传递原始联系人 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,
                        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, null, where, null,
                        null);
        startManagingCursor(cursor);
        Log.e("Count is:", ""+ cursor.getCount());
        while (cursor.moveToNext()) {
            groupid = cursor
                    .getString(cursor.getColumnIndex(ContactsContract.Data.DATA1));
            Log.e("groupid", groupid);
            break;
        }
    

    一个联系人可能在多个组中,这里它只返回第一个组。

    我认为这可能对某人有用...

    【讨论】:

    • 必须这样做,因为 GroupMembership 没有 URI,只有 MIME 类型。为什么 Google 认为这很好??
    猜你喜欢
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    相关资源
    最近更新 更多