I try to get a contact detail. I can get DISPLAY_NAME, Phone.DATA from Phone.CONTENT_URI. I use below codes :
String urlData = "";
final String[] projection = new String[] {
ContactsContract.CommonDataKinds.Website.URL,
ContactsContract.CommonDataKinds.Website.TYPE
};
final Cursor contactData = getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, ContactsContract.Data.CONTACT_ID + "=" + contactId,null, null);
if (contactData.moveToNext()) {
int urlColumnIndex = contactData.getColumnIndex(ContactsContract.CommonDataKinds.Website.URL);
String url = contactData.getString(urlColumnIndex);
String urlType = contactData.getString(contactData.getColumnIndex(ContactsContract.CommonDataKinds.Website.TYPE));
urlData += url + " " + urlType;
return urlData;
}
It returns the value of display_name. I don't understand why I cannot get url data.
How can I do it?
EDIT
I have Contacts._ID.
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
I use below function to get contact url address.
private void getURLById(String id, ContentResolver cr) {
Log.i("@@getURLById", ".");
final String[] projection = new String[] {
ContactsContract.CommonDataKinds.Website.URL,
ContactsContract.CommonDataKinds.Website.TYPE
};
String selection = ContactsContract.Data._ID + " = " + id + " AND " + ContactsContract.Contacts.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'";
final Cursor websites = getActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI, projection, selection, null, null);
Log.e("Count ", " " + websites.getCount());
Count returns zero.
keep the query for Data table, and add the following selection:
Data.CONTACT_ID + " = " + contactId + " and " + Data.MIMETYPE + " = '" + CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'"
this will select only rows of type Website.
Code:
final String[] projection = new String[] {
ContactsContract.CommonDataKinds.Website.URL,
ContactsContract.CommonDataKinds.Website.TYPE
};
String selection = Data.CONTACT_ID + " = " + contactId + " AND " + Data.MIMETYPE + " = '" + CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'";
final Cursor contactData = getContentResolver().query(Data.CONTENT_URI, projection, selection, null, null);
UPDATE
Contacts._ID
is not Data._ID
, change your selection to:
String selection = ContactsContract.Data.CONTACT_ID + " = " + id + " AND " + ContactsContract.Contacts.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE + "'";