How to read contacts on Android 2.0

前端 未结 9 973
我寻月下人不归
我寻月下人不归 2020-11-22 05:58

I\'m working on Android 2.0 and am trying to receive a list of all contacts.

Since android.provider.Contacts.People is deprecated, I have to use android

相关标签:
9条回答
  • 2020-11-22 06:07

    Put this ....

    Cursor phones = 
    
        getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
                    while (phones.moveToNext())
                    {
                    String Name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    String Number=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
    }
    

    Let me know if any issue.

    0 讨论(0)
  • 2020-11-22 06:08

    I think it is important to have the code from this URL http://coderzheaven.com/2011/06/get-all-details-from-contacts-in-android/ on StackOverflow cause at times links like that go down.

     public void readContacts(){
             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) {
                        System.out.println("name : " + name + ", ID : " + id);
    
                        // get the phone number
                        Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                                               ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
                                               new String[]{id}, null);
                        while (pCur.moveToNext()) {
                              String phone = pCur.getString(
                                     pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                              System.out.println("phone" + phone);
                        }
                        pCur.close();
    
                        // get email and type
    
                       Cursor emailCur = cr.query(
                                ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                                null,
                                ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                                new String[]{id}, null);
                        while (emailCur.moveToNext()) {
                            // This would allow you get several email addresses
                                // if the email addresses were stored in an array
                            String email = emailCur.getString(
                                          emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                            String emailType = emailCur.getString(
                                          emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
    
                          System.out.println("Email " + email + " Email Type : " + emailType);
                        }
                        emailCur.close();
    
                        // Get note.......
                        String noteWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
                        String[] noteWhereParams = new String[]{id,
                        ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE};
                                Cursor noteCur = cr.query(ContactsContract.Data.CONTENT_URI, null, noteWhere, noteWhereParams, null);
                        if (noteCur.moveToFirst()) {
                            String note = noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
                          System.out.println("Note " + note);
                        }
                        noteCur.close();
    
                        //Get Postal Address....
    
                        String addrWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
                        String[] addrWhereParams = new String[]{id,
                            ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE};
    //               Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI,
    //                       null, null, null, null);
                   Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI,
                           null, addrWhere, addrWhereParams, null);
    
                        while(addrCur.moveToNext()) {
                            String poBox = addrCur.getString(
                                         addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
                            String street = addrCur.getString(
                                         addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
                            String city = addrCur.getString(
                                         addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
                            String state = addrCur.getString(
                                         addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
                            String postalCode = addrCur.getString(
                                         addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
                            String country = addrCur.getString(
                                         addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
                            String type = addrCur.getString(
                                         addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));
    
                            // Do something with these....
    
                        }
                        addrCur.close();
    
                        // Get Instant Messenger.........
                        String imWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
                        String[] imWhereParams = new String[]{id,
                            ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE};
                        Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI,
                                null, imWhere, imWhereParams, null);
                        if (imCur.moveToFirst()) {
                            String imName = imCur.getString(
                                     imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA));
                            String imType;
                            imType = imCur.getString(
                                     imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE));
                        }
                        imCur.close();
    
                        // Get Organizations.........
    
                        String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
                        String[] orgWhereParams = new String[]{id,
                            ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
                        Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI,
                                    null, orgWhere, orgWhereParams, null);
                        if (orgCur.moveToFirst()) {
                            String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
                            String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
                        }
                        orgCur.close();
                    }
                }
           }
        }
    

    emphasized text

    0 讨论(0)
  • 2020-11-22 06:09

    This part wouldn't work for me:

     while (phones.moveToNext()) { 
         String phoneNumber = phones.getString( 
           phones.getColumnIndex( 
             ContactsContract.CommonDataKinds.Phone.NUMBER));                 
        } 
    

    If I use this, though, it does:

     while (phones.moveToNext()) { 
                                      String pdata = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
                                      Log.v("DATA",pdata);
    }
    
    0 讨论(0)
  • 2020-11-22 06:10

    I'm using Samsung Galaxy Note 4, and I donno why none of the above worked for me. I mixed up some and made this woking..

        Cursor people = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
        people.moveToFirst();
        while(people.moveToNext()) {
           int nameFieldColumnIndex = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
           String contact = people.getString(nameFieldColumnIndex);
           int numberFieldColumnIndex = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA);
           String number = people.getString(numberFieldColumnIndex);
           dbWriter.execSQL("Insert Into ContactsList (ContactName, ContactNumber) Values (" +
                     "'" + contact.replace("'",  "''") + "', '" + number.replace("'",  "''") + "')");
        }
        people.close();
    
    0 讨论(0)
  • 2020-11-22 06:18

    I found very easy solution to read contacts. (boring to write code for reading each value so it's good to use wrapper class for contacts)

    Of course <uses-permission android:name="android.permission.READ_CONTACTS"/>

    ContactList.java

    package com.test;
    
    import java.util.ArrayList;
    
    public class ContactList {
    private ArrayList<Contact> contacts = new ArrayList<Contact>();
    
    public ArrayList<Contact> getContacts() {
        return contacts;
    }
    
    public void setContacts(ArrayList<Contact> contacts) {
        this.contacts = contacts;
    }
    
    public void addContact(Contact contact) {
         this.contacts.add(contact);
     }
    
     public ContactList() {
    
     }
    }
    

    Contact.java

    package com.test;
    
    import java.util.ArrayList;
    
    
    public class Contact {
    private String id;
     private String displayName;
     private ArrayList<Phone> phone;
     private ArrayList<Email> email;
     private ArrayList<String> notes;
     private ArrayList<Address> addresses = new ArrayList<Address>();
     private ArrayList<IM> imAddresses;
     private Organization organization;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getDisplayName() {
        return displayName;
    }
    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }
    public ArrayList<Phone> getPhone() {
        return phone;
    }
    public void setPhone(ArrayList<Phone> phone) {
        this.phone = phone;
    }
    public void addPhone(Phone phone) {
         this.phone.add(phone);
     }
    public ArrayList<Email> getEmail() {
        return email;
    }
    public void setEmail(ArrayList<Email> email) {
        this.email = email;
    }
    public void addEmail(Email email) {
         this.email.add(email);
     }
    public ArrayList<String> getNotes() {
        return notes;
    }
    public void setNotes(ArrayList<String> notes) {
        this.notes = notes;
    }
    public void AddNotes(String notes){
        this.notes.add(notes);
    }
    public ArrayList<Address> getAddresses() {
        return addresses;
    }
    public void setAddresses(ArrayList<Address> addresses) {
        this.addresses = addresses;
    }
    public void addAddress(Address address) {
         this.addresses.add(address);
     }
    public ArrayList<IM> getImAddresses() {
        return imAddresses;
    }
    public void setImAddresses(ArrayList<IM> imAddresses) {
        this.imAddresses = imAddresses;
    }
    public void addImAddresses(IM imAddr) {
         this.imAddresses.add(imAddr);
     }
    public Organization getOrganization() {
        return organization;
    }
    public void setOrganization(Organization organization) {
        this.organization = organization;
    }
    }
    

    Address.java

    package com.test;
    
    public class Address {
    private String poBox;
     private String street;
     private String city;
     private String state;
     private String postalCode;
     private String country;
     private String type;
     private String asString = "";
    
     public String getType() {
         return type;
     }
     public void setType(String type) {
         this.type = type;
     }
     public String getPoBox() {
         return poBox;
     }
     public void setPoBox(String poBox) {
         this.poBox = poBox;
     }
     public String getStreet() {
         return street;
     }
     public void setStreet(String street) {
         this.street = street;
     }
     public String getCity() {
         return city;
     }
     public void setCity(String city) {
         this.city = city;
     }
     public String getState() {
         return state;
     }
     public void setState(String state) {
         this.state = state;
     }
     public String getPostalCode() {
         return postalCode;
     }
     public void setPostalCode(String postalCode) {
         this.postalCode = postalCode;
     }
     public String getCountry() {
         return country;
     }
     public void setCountry(String country) {
         this.country = country;
     }
     public String toString() {
         if (this.asString.length() > 0) {
             return(this.asString);
         } else {
             String addr = "";
             if (this.getPoBox() != null) {
                 addr = addr + this.getPoBox() + "n";
             }
             if (this.getStreet() != null) {
                 addr = addr + this.getStreet() + "n";
             }
             if (this.getCity() != null) {
                 addr = addr + this.getCity() + ", ";
             }
             if (this.getState() != null) {
                 addr = addr + this.getState() + " ";
             }
             if (this.getPostalCode() != null) {
                 addr = addr + this.getPostalCode() + " ";
             }
             if (this.getCountry() != null) {
                 addr = addr + this.getCountry();
             }
             return(addr);
         }
     }
    
     public Address(String asString, String type) {
         this.asString = asString;
         this.type = type;
     }
    
     public Address(String poBox, String street, String city, String state, 
             String postal, String country, String type) {
         this.setPoBox(poBox);
          this.setStreet(street);
         this.setCity(city);
         this.setState(state);
         this.setPostalCode(postal);
         this.setCountry(country);
         this.setType(type);
     }
    }
    

    Email.java

    package com.test;
    
    public class Email {
    private String address;
     private String type;
     public String getAddress() {
         return address;
     }
     public void setAddress(String address) {
         this.address = address;
     }
     public String getType() {
         return type;
     }
     public void setType(String t) {
         this.type = t;
     }
    
     public Email(String a, String t) {
         this.address = a;
         this.type = t;
     }
    }
    

    Im.java

    package com.test;
    
    public class IM {
    private String name;
     private String type;
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public String getType() {
         return type;
     }
     public void setType(String type) {
         this.type = type;
     }
    
     public IM(String name, String type) {
         this.name = name;
         this.type = type;
     }
    }
    

    Organization.java

    package com.test;
    
    public class Organization {
    private String organization = "";
     private String title = "";
     public String getOrganization() {
         return organization;
     }
     public void setOrganization(String organization) {
         this.organization = organization;
     }
     public String getTitle() {
         return title;
     }
     public void setTitle(String title) {
         this.title = title;
     }
    
     public Organization() {
    
     }
     public Organization(String org, String title) {
         this.organization = org;
         this.title = title;
     }
    }
    

    Phone.java

    package com.test;
    
    public class Phone {
    private String number;
     private String type;
    
     public String getNumber() {
         return number;
     }
    
     public void setNumber(String number) {
         this.number = number;
     }
    
     public String getType() {
         return type;
     }
    
     public void setType(String type) {
         this.type = type;
     }
    
     public Phone(String n, String t) {
         this.number = n;
         this.type = t;
     }
    }
    

    ContactAPI.java

    package com.test;
    
    import android.content.ContentResolver;
    import android.content.Intent;
    import android.database.Cursor;
    import android.os.Build;
    
    public abstract class ContactAPI {
    private static ContactAPI api;
    
     public static ContactAPI getAPI() {
         if (api == null) {
             String apiClass;
             if (Integer.parseInt(Build.VERSION.SDK) >= Build.VERSION_CODES.ECLAIR) {
                 apiClass = "com.*********.ContactAPISdk5";
             } else {
                 apiClass = "com.*********.ContactAPISdk3";
             }
    
             try {
                 Class<? extends ContactAPI> realClass = Class.forName(apiClass).
                     asSubclass(ContactAPI.class);
                 api = realClass.newInstance();
             } catch (Exception e) {
                 throw new IllegalStateException(e);
             }
    
         }
         return api;
     }
    
     public abstract Intent getContactIntent();
    
     public abstract ContactList newContactList();
    
     public abstract Cursor getCur();
     public abstract void setCur(Cursor cur);
    
     public abstract ContentResolver getCr();
     public abstract void setCr(ContentResolver cr);
    
    }
    

    ContactAPISdk5.java

    package com.test;
    import java.util.ArrayList;
    import android.content.ContentResolver;
    import android.content.Intent;
    import android.database.Cursor;
    import android.provider.ContactsContract;
    
    public class ContactAPISdk5 extends ContactAPI {
    
     private Cursor cur;
     private ContentResolver cr;
    
    
     public Cursor getCur() {
         return cur;
     }
    
     public void setCur(Cursor cur) {
         this.cur = cur;
     }
    
     public ContentResolver getCr() {
         return cr;
     }
    
     public void setCr(ContentResolver cr) {
         this.cr = cr;
     }
    
     public Intent getContactIntent() {
         return(new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI));
     }
    
     public ContactList newContactList() {
         ContactList contacts = new ContactList();
         String id;
    
         this.cur = this.cr.query(ContactsContract.Contacts.CONTENT_URI,
                 null, null, null, null);
         if (this.cur.getCount() > 0) {
             while (cur.moveToNext()) {
                 Contact c = new Contact();
                 id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                 c.setId(id);
                 c.setDisplayName(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
                 if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                     c.setPhone(this.getPhoneNumbers(id));
                 }
                 c.setEmail(this.getEmailAddresses(id));
                 c.setNotes(this.getContactNotes(id));
                 c.setAddresses(this.getContactAddresses(id));
                 c.setImAddresses(this.getIM(id));
                 c.setOrganization(this.getContactOrg(id));
                 contacts.addContact(c);
             }
         }
         return(contacts);
     }
    
     public ArrayList<Phone> getPhoneNumbers(String id) {
         ArrayList<Phone> phones = new ArrayList<Phone>();
    
         Cursor pCur = this.cr.query(
                 ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                 null, 
                 ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
                 new String[]{id}, null);
         while (pCur.moveToNext()) {
             phones.add(new Phone(
                     pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
                     , pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE))
             ));
    
         } 
         pCur.close();
         return(phones);
     }
    
     public ArrayList<Email> getEmailAddresses(String id) {
         ArrayList<Email> emails = new ArrayList<Email>();
    
         Cursor emailCur = this.cr.query( 
                 ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
                 null,
                 ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
                 new String[]{id}, null); 
         while (emailCur.moveToNext()) { 
             // This would allow you get several email addresses
             Email e = new Email(emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA))
                     ,emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE))  
                     );
             emails.add(e);
         } 
         emailCur.close();
         return(emails);
     }
    
     public ArrayList<String> getContactNotes(String id) {
         ArrayList<String> notes = new ArrayList<String>();
         String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
         String[] whereParameters = new String[]{id, 
             ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE}; 
         Cursor noteCur = this.cr.query(ContactsContract.Data.CONTENT_URI, null, where, whereParameters, null); 
         if (noteCur.moveToFirst()) { 
             String note = noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
             if (note.length() > 0) {
                 notes.add(note);
             }
         } 
         noteCur.close();
         return(notes);
     }
    
     public ArrayList<Address> getContactAddresses(String id) {
         ArrayList<Address> addrList = new ArrayList<Address>();
    
         String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
         String[] whereParameters = new String[]{id, 
                 ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE}; 
    
         Cursor addrCur = this.cr.query(ContactsContract.Data.CONTENT_URI, null, where, whereParameters, null); 
         while(addrCur.moveToNext()) {
             String poBox = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
             String street = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
             String city = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
             String state = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
             String postalCode = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
             String country = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
             String type = addrCur.getString(addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));
             Address a = new Address(poBox, street, city, state, postalCode, country, type);
             addrList.add(a);
         } 
         addrCur.close();
         return(addrList);
     }
    
     public ArrayList<IM> getIM(String id) {
         ArrayList<IM> imList = new ArrayList<IM>();
         String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
         String[] whereParameters = new String[]{id, 
                 ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE}; 
    
         Cursor imCur = this.cr.query(ContactsContract.Data.CONTENT_URI, null, where, whereParameters, null); 
         if (imCur.moveToFirst()) { 
             String imName = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA));
             String imType;
             imType = imCur.getString(imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE));
             if (imName.length() > 0) {
                 IM im = new IM(imName, imType);
                 imList.add(im);
             }
         } 
         imCur.close();
         return(imList);
     }
    
     public Organization getContactOrg(String id) {
         Organization org = new Organization();
         String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
         String[] whereParameters = new String[]{id, 
                 ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE}; 
    
         Cursor orgCur = this.cr.query(ContactsContract.Data.CONTENT_URI, null, where, whereParameters, null);
    
         if (orgCur.moveToFirst()) { 
             String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
             String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
             if (orgName.length() > 0) {
                 org.setOrganization(orgName);
                 org.setTitle(title);
             }
         } 
         orgCur.close();
         return(org);
     }
    
     }
    

    ContactAPISdk3.java

    package com.test;
    
    import java.util.ArrayList;
    
    import android.content.ContentResolver;
    import android.content.Intent;
    import android.database.Cursor;
    import android.provider.Contacts;
    import android.provider.Contacts.People;
    
    public class ContactAPISdk3 extends ContactAPI {
    
     private Cursor cur;
     private ContentResolver cr;
    
     public Cursor getCur() {
         return cur;
     }
    
     public void setCur(Cursor cur) {
         this.cur = cur;
     }
    
     public ContentResolver getCr() {
         return cr;
     }
    
     public void setCr(ContentResolver cr) {
         this.cr = cr;
     }
    
     public Intent getContactIntent() {
         return(new Intent(Intent.ACTION_PICK, People.CONTENT_URI));
     }
    
     public ContactList newContactList() {
         ContactList contacts = new ContactList();
         String id="";
    
         this.cur = this.cr.query(People.CONTENT_URI, 
                 null, null, null, null);
         if (this.cur.getCount() > 0) {
             while (cur.moveToNext()) {
                 Contact c = new Contact();
                 id = cur.getString(cur.getColumnIndex(People._ID));
                 c.setId(id);
                 c.setDisplayName(cur.getString(cur.getColumnIndex(People.DISPLAY_NAME)));
                 if (Integer.parseInt(cur.getString(cur.getColumnIndex(People.PRIMARY_PHONE_ID))) > 0) {
                     c.setPhone(this.getPhoneNumbers(id));
                 }
                 c.setEmail(this.getEmailAddresses(id));
                 ArrayList<String> notes = new ArrayList<String>();
                 notes.add(cur.getString(cur.getColumnIndex(People.NOTES)));
                 c.setNotes(notes);
                 c.setAddresses(this.getContactAddresses(id));
                 c.setImAddresses(this.getIM(id));
                 c.setOrganization(this.getContactOrg(id));
                 contacts.addContact(c);
             }
         }
         return(contacts);
     }
    
     public ArrayList<Phone> getPhoneNumbers(String id) {
         ArrayList<Phone> phones = new ArrayList<Phone>();
    
         Cursor pCur = this.cr.query(
                 Contacts.Phones.CONTENT_URI, 
                 null, 
                 Contacts.Phones.PERSON_ID +" = ?", 
                 new String[]{id}, null);
         while (pCur.moveToNext()) {
             phones.add(new Phone(
                     pCur.getString(pCur.getColumnIndex(Contacts.Phones.NUMBER))
                     , pCur.getString(pCur.getColumnIndex(Contacts.Phones.TYPE))
             ));
    
         } 
         pCur.close();
         return(phones);
     }
    
     public ArrayList<Email> getEmailAddresses(String id) {
         ArrayList<Email> emails = new ArrayList<Email>();
    
         Cursor emailCur = this.cr.query( 
                 Contacts.ContactMethods.CONTENT_EMAIL_URI, 
                 null,
                 Contacts.ContactMethods.PERSON_ID + " = ?", 
                 new String[]{id}, null); 
         while (emailCur.moveToNext()) { 
             // This would allow you get several email addresses
             Email e = new Email(emailCur.getString(emailCur.getColumnIndex(Contacts.ContactMethods.DATA))
                     ,emailCur.getString(emailCur.getColumnIndex(Contacts.ContactMethods.CONTENT_EMAIL_TYPE))  
                     );
             emails.add(e);
         } 
         emailCur.close();
         return(emails);
     }
    
     public ArrayList<Address> getContactAddresses(String id) {
         ArrayList<Address> addrList = new ArrayList<Address>();
    
         String where = Contacts.ContactMethods.PERSON_ID + " = ? AND " + Contacts.ContactMethods.KIND + " = ?"; 
         String[] whereParameters = new String[]{id, 
                 Contacts.ContactMethods.CONTENT_POSTAL_ITEM_TYPE}; 
    
         Cursor addrCur = this.cr.query(Contacts.ContactMethods.CONTENT_URI, null, where, whereParameters, null); 
         while(addrCur.moveToNext()) {
             String addr = addrCur.getString(addrCur.getColumnIndex(Contacts.ContactMethodsColumns.DATA));
             String type = addrCur.getString(addrCur.getColumnIndex(Contacts.ContactMethodsColumns.TYPE));
             Address a = new Address(addr, type);
             addrList.add(a);
         } 
         addrCur.close();
         return(addrList);
     }
    
     public ArrayList<IM> getIM(String id) {
         ArrayList<IM> imList = new ArrayList<IM>();
         String where = Contacts.ContactMethods.PERSON_ID + " = ? AND " + Contacts.ContactMethods.KIND + " = ?"; 
         String[] whereParameters = new String[]{id, 
                 Contacts.ContactMethods.CONTENT_IM_ITEM_TYPE}; 
    
         Cursor imCur = this.cr.query(Contacts.ContactMethods.CONTENT_URI, null, where, whereParameters, null); 
         if (imCur.moveToFirst()) { 
             String imName = imCur.getString(imCur.getColumnIndex(Contacts.ContactMethodsColumns.DATA));
             String imType = imCur.getString(imCur.getColumnIndex(Contacts.ContactMethodsColumns.TYPE));
             if (imName.length() > 0) {
                 IM im = new IM(imName, imType);
                 imList.add(im);
             }
         } 
         imCur.close();
         return(imList);
     }
    
     public Organization getContactOrg(String id) {
         Organization org = new Organization();
         String where = Contacts.ContactMethods.PERSON_ID + " = ?"; 
         String[] whereParameters = new String[]{id}; 
    
         Cursor orgCur = this.cr.query(Contacts.Organizations.CONTENT_URI, null, where, whereParameters, null);
    
         if (orgCur.moveToFirst()) { 
             String orgName = orgCur.getString(orgCur.getColumnIndex(Contacts.Organizations.COMPANY));
             String title = orgCur.getString(orgCur.getColumnIndex(Contacts.Organizations.TITLE));
             if (orgName.length() > 0) {
                 org.setOrganization(orgName);
                 org.setTitle(title);
             }
         } 
         orgCur.close();
         return(org);
     }
     }
    

    Note : Don't forget to change package name instead *******.

    Source (link can be die any time :))

    0 讨论(0)
  • 2020-11-22 06:28

    You can use "ContactManager" example from android developer's site (OR) Go to the location where you have set the path to download android-sdk in your system. In android-sdk-mac_x86/samples/android-10 folder, you can see "ContactManager" example.

    I have tried using this example, worked well in my application.

    0 讨论(0)
提交回复
热议问题