Read Contacts information in Android system.

来源:互联网 发布:淘宝助手销售属性空白 编辑:程序博客网 时间:2024/05/16 14:27

1. add user perimission

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


 

2. This is the data entity

import java.util.List;public class Contact {// Phone numberprivate List<String> mPhoneNumbers;public void setPhoneNumbers(List<String> phontNumberList) {this.mPhoneNumbers = phontNumberList;}public List<String> getPhoneNumbers() {return mPhoneNumbers;}// Display Namepublic void setDisplayName(String displayName) {this.mDisplayName = displayName;}public String getDisplayName() {return mDisplayName;}private String mDisplayName;//Contact IDprivate long mContactID;public void setContactID(long contactID) {mContactID = contactID;}public long getContactID() {return mContactID;}// Photo IDprivate long mPhotoID;public void setPhotoID(long photoID) {mPhotoID = photoID;}public long getPhotoID() {return mPhotoID;}}


 

3. Create Contacts Manager

import java.util.ArrayList;import java.util.List;import android.content.ContentResolver;import android.content.Context;import android.database.Cursor;import android.provider.ContactsContract;public class ContactsManager {private static ContactsManager instance = null;private List<Contact> mContactList;private ContactsManager(Context context) {mContactList = GetAllContacts(context);}public static ContactsManager getInstance(Context context) {if(instance == null) {instance = new ContactsManager(context);}return instance;}private List<Contact> GetAllContacts(Context context){List<Contact> contactList = new ArrayList<Contact>();ContentResolver resolver = context.getContentResolver();// 获取手机联系人Cursor phoneCursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);if (phoneCursor != null) {while (phoneCursor.moveToNext()) {Contact c = new Contact();// set display nameString displayName = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));c.setDisplayName(displayName);// set contactIDString contactId = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.Contacts._ID));c.setContactID(Long.parseLong(contactId));// has phoneNumberFlagString hasPhone = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));// 如果有电话号码if (hasPhone.compareTo("1") == 0){Cursor phones = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);List<String> phoneNumbers = new ArrayList<String>();while (phones.moveToNext()) {String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));phoneNumbers.add(phoneNumber);}c.setPhoneNumbers(phoneNumbers);}// set Photo IDString photoID = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));if(photoID != null)c.setPhotoID(Long.parseLong(photoID));else     c.setPhotoID(0);// add to listcontactList.add(c);}}return contactList;}public List<Contact> getContactList(){return mContactList;}public String getContactName(long contactID){String name="";if(mContactList != null){for(int i=0; i<mContactList.size();i++){Contact contact = mContactList.get(i);if(contact.getContactID() == contactID){name = contact.getDisplayName();break;}}}return name;}}


4. Usage

ContactsManager contactsManager = ContactsManager.getInstance(SMSService.this);


 

If you use it in Activity, just pass the Activity as context. I am using it in the service.
原创粉丝点击