Retrieval of firstname and lastname from android contacts results in '1' and 'null'

时光总嘲笑我的痴心妄想 提交于 2019-12-03 13:55:24

问题


I am retrieving firstname and lastname from the android contact using the below code.DISPLAY_NAME gives back the name of the contact while firstname and lastname returns 1 and null respectively.The following 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


回答1:


The following code will help you get first name and last name:

Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
Uri dataUri = Uri.withAppendedPath(contactUri, Contacts.Data.CONTENT_DIRECTORY);
Cursor nameCursor = getActivity().getContentResolver().query(
        dataUri,
        null,
        Data.MIMETYPE+"=?",
        new String[]{ StructuredName.CONTENT_ITEM_TYPE },
        null);
           while (nameCursor.moveToNext())
            {

                String      firstName = nameCursor.getString(nameCursor.getColumnIndex(Data.DATA2));
                String  lastName = nameCursor.getString(nameCursor.getColumnIndex(Data.DATA3));

                Toast.makeText(getApplicationContext(), "First name"+firstName, Toast.LENGTH_LONG).show();
                Toast.makeText(getApplicationContext(), "Second name"+lastName, Toast.LENGTH_LONG).show();

                return new String [] {firstName , lastName};
            }

           nameCursor.close();


来源:https://stackoverflow.com/questions/13951609/retrieval-of-firstname-and-lastname-from-android-contacts-results-in-1-and-nu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!