Read Contacts information in Android system.
16lz
2021-01-23
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);
更多相关文章
- android联系人中英文混合排序
- android 通过ContentResolver获得联系人数据
- android打开联系人的代码
- 实现类似Android联系人搜索功能
- android获取联系人所有内容
- Android 添加删除联系人2.0之前与2.0之后
- Android 学习笔记 Contacts (二)Contacts 联系人详解
- Android联系人数据库全解析(4)
- Android联系人数据库全解析(3)