Извлечение имени и фамилии из контактов Android приводит к «1» и «NULL»

Я получаю имя и фамилию из контакта Android с помощью приведенного ниже кода. DISPLAY_NAME возвращает имя контакта, в то время как имя и фамилия возвращают 1 и ноль соответственно. Ниже приведен код.

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();
            }
        }           
    }

Когда я изменяю строку cr.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI на cr.query (ContactsContract.Data.CONTENT_URI, я получаю журнал как

Предложения высоко ценятся. Спасибо заранее

Ответы на вопрос(1)

Ваш ответ на вопрос