I am extracting the first and last name from the android contact using the code below. DISPLAY_NAME returns the name of the contact, while firstname and lastname return 1 and null, respectively. Below is the code.
ContentResolver cr = getContentResolver(); Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,null, null, null); if (cur.getCount() > 0) { while (cur.moveToNext()) { String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?", new String[] { id }, null); while (pCur.moveToNext()) { String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); String firstname = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME)); String lastname = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME)); System.out.println("firstname and lastname" + firstname+ " "+lastname); phoneNo = phoneNo.replaceAll("\\D", ""); names.add(name); phnno.add(phoneNo); } pCur.close(); } } }
When I change the line cr.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI to cr.query (ContactsContract.Data.CONTENT_URI, I get the log as

Suggestions are highly appreciated. thanks in advance
source share