代码之家  ›  专栏  ›  技术社区  ›  Bao Le

android2.0如何在联系人组中获得显示姓名和号码

  •  1
  • Bao Le  · 技术社区  · 16 年前

    身份证件 :

    Cursor cur = ctx.managedQuery(ContactsContract.Data.CONTENT_URI,
                 new String[] { GroupMembership.GROUP_ROW_ID,
            GroupMembership.CONTACT_ID },
            GroupMembership.GROUP_ROW_ID + "=" + String.valueOf(id),
            null, null);
    
    if (cur.moveToFirst()) {
        int groupIdx = cur.getColumnIndex(GroupMembership.GROUP_ROW_ID);
        int personIdx = cur.getColumnIndex(GroupMembership.CONTACT_ID);
    
        do {
            if (cur.getLong(groupIdx) == id) {
                Cursor ccur = ctx.getContentResolver().query( Phone.CONTENT_URI,
                    new String[] {Phone.NUMBER, Phone.TYPE,
                    Phone.DISPLAY_NAME },
                    Phone.CONTACT_ID +"="+ contactId, 
                          null, null); 
                Log.e("Test: Number", ccur.getString(0))
                Log.e("Test: Name", ccur.getString(2))
            }
        } while (cur.moveToNext());
    }
    

    但这似乎并不正确。

    1 回复  |  直到 9 年前
        1
  •  3
  •   Pentium10    16 年前

    可能你错过了模拟型。

    String where = ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + "="
                    + groupid + " AND "
                    + ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + "='"
                    + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "'";
    
            Cursor c = this.ctx.getContentResolver().query(
                    ContactsContract.Data.CONTENT_URI,
                    new String[] {
                            ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
                            ContactsContract.Data.DISPLAY_NAME
                    }, where, null, ContactsContract.Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC");