Get first and last name of a contact rather than single display name?

后端 未结 3 1116
遇见更好的自我
遇见更好的自我 2020-12-16 22:10

I am currently working with the Android Contacts content provider and currently can access a contacts full display name without issue using the following code:



        
3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-16 22:42

    Here is a general function for getting user data from ContactsContract.Data table:

    Map result = new HashMap<>();
    Cursor cursor = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "='" + YOUR_CONTACT_ID + "'", null, null);
    if (cursor != null) {
        while (cursor.moveToNext()) {
            String mime = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.MIMETYPE));
            switch (mime) {
                case ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE:
                    result.put(FIRST_NAME, cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME)));
                    result.put(LAST_NAME, cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME)));
                    break;
                case ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE:
                    result.put(CITY, cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)));
                    result.put(STREET, cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)));
                    result.put(ZIP, cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)));
                    break;
                case ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE:
                    if (ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE == cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE))) {
                        result.put(MOBILE, cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
                    }
                    break;
            }
        }
        cursor.close();
    }
    return result;
    

提交回复
热议问题