If you have a contact ID, you can use this method to retrieve all other contact information:
Map<String, String> 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;
source share