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));elsec.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.

更多相关文章

  1. android联系人中英文混合排序
  2. android 通过ContentResolver获得联系人数据
  3. android打开联系人的代码
  4. 实现类似Android联系人搜索功能
  5. android获取联系人所有内容
  6. Android 添加删除联系人2.0之前与2.0之后
  7. Android 学习笔记 Contacts (二)Contacts 联系人详解
  8. Android联系人数据库全解析(4)
  9. Android联系人数据库全解析(3)

随机推荐

  1. Android从远程服务器下载文件到本地sd卡
  2. 使用<data android: 建立和activity的关
  3. Android中GridView组件的使用
  4. Android 2.3 API改变大全
  5. Android比较好的10个开源框架
  6. [Android 問題] Make/Build Error: You a
  7. Android 开发者必备的十个工具(上)
  8. 3G定时开关 for android
  9. android投屏和媒体共享相关 && audio foc
  10. Android(安卓)TTS学习——TTS初体验(下)