Each many examples (website, tutorial, ebook...), when we need to see Phone number of one contact ID, we need to requery like below code:
Cursor contactCursor = getContentResolver().query(uri, null, null, null, null);
if (contactCursor.moveToFirst()){
id = contactCursor.getString(contactCursor.getColumnIndex(ContactsContract.Contacts._ID));
}
contactCursor.close();
//CHOOSE MOBILE PHONE OF CONTACT_ID
Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER},
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + id + " AND " + ContactsContract.CommonDataKinds.Phone.TYPE+ "=" +ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE ,
null, null);
But, If I query directly at one contact uri
and filter column _ID = contactID. I will meet error at query. Here my code:
String[] projector = new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER};
String selection = ContactsContract.CommonDataKinds.Phone.TYPE + "=" + ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE;
Cursor phoneContact = getContentResolver().query(uri, projector, selection, null, null);
Notes: uri object in above code return when someone choose one contact from contact list.
@Edit: here my error I receive: Here my error:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { dat=content://com.android.contacts/contacts/lookup/0r2-354F574135474F2741334D352743/2 flg=0x1 }} to activity {com.basic/com.data.SMSContactApp}: java.lang.IllegalArgumentException: Invalid column data1
Thanks :)