how to get android contact list data on my seperat

2019-09-02 14:30发布

问题:

i have created one listview.now i want to show data(contact no.,name) from contactlist of android(Phonebook) on my listview. i got it for android 1.5 but i want to do it for android2.1updated.

How to do it?can any one guide me or give some sample code? Thanks in advance---

回答1:

If you have achieved it in 1.5 then there can be a small difference of URI. You should go for updated/changed URI of Contacts in 2.1. For further understanding here is a sample code for 2.1updated:

ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cur.moveToNext()) 
        {
            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));

            //---------------------------------------- Contact Names        
            //------------------------------------------------------
            String DisplayName = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            Cursor names = cr.query(ContactsContract.Data.CONTENT_URI, null,ContactsContract.Data.CONTACT_ID + " = " + id, null, null);
            names.moveToNext();
            String GivenName = names.getString(names.getColumnIndex(ContactsContract.Data.DATA2));
            String FamilyName = names.getString(names.getColumnIndex(ContactsContract.Data.DATA3));
            String MiddleName = names.getString(names.getColumnIndex(ContactsContract.Data.DATA5));
            names.close();


            //----------------------------------------- Phone Numbers
            //-------------------------------------------------------
            String hasPhoneNumber = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
            if (hasPhoneNumber.equals("1"))
            {
                Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
                while (phones.moveToNext()) 
                {
                                      ......
                }
            }
        } // AND SO ON.... Get which ever data you need.

so above is just a sample code that I used for my task. You can get what you need by making changes accordingly. I hope it helps.



回答2:

This will help you getting contacts.

Cursor contactList = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null,null, null);

For getting phone number of a particular contact,you need to use:

String id = contactList.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));

Cursor phoneCursor = getContentResolver().query(
                      ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                      new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER}, 
                      ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
                      new String[]{id}, null);