package com.example.yqqmobilesafe.ContactProvider;import java.util.ArrayList;import java.util.List;import android.R.integer;import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.provider.ContactsContract;import com.example.yqqmobilesafe.domain.ContactInfo;public class ContactInfoProvider {private Context mContext;public ContactInfoProvider(Context context) {mContext=context;}/** * 获取系统联系人信息 * @return */public  List<ContactInfo> getSystemContactInfos(){List<ContactInfo> infos=new ArrayList<ContactInfo>();// 使用ContentResolver查找联系人数据Cursor cursor = mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null,null, null);// 遍历查询结果,获取系统中所有联系人while (cursor.moveToNext()){ContactInfo info=new ContactInfo();// 获取联系人IDString contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));// 获取联系人的名字String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));info.setContactName(name);// 使用ContentResolver查找联系人的电话号码Cursor phones = mContext.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = " + contactId, null, null);// 遍历查询结果,获取该联系人的多个电话号码while (phones.moveToNext()){// 获取查询结果中电话号码列中数据。String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));info.setPhoneNumber(phoneNumber);}phones.close();infos.add(info);info=null;}cursor.close();return infos;}/** * 分页查询系统联系人信息 * @param pageSize 每页最大的数目 * @param currentOffset 当前的偏移量 * @return */public List<ContactInfo> getContactsByPage(int pageSize,int currentOffset) {List<ContactInfo> infos=new ArrayList<ContactInfo>();Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; String[] projection = { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.DATA1, "sort_key"};Cursor cursor = mContext.getContentResolver().query(uri, projection, null, null, "sort_key COLLATE LOCALIZED asc limit " + pageSize + " offset " + currentOffset);if (cursor != null) {while (cursor.moveToNext()) {ContactInfo info=new ContactInfo();String contactName = cursor.getString(0);String phoneNumber = cursor.getString(1);info.setContactName(contactName);info.setPhoneNumber(phoneNumber);infos.add(info);info=null;}cursor.close();}return infos;}/** * 获得系统联系人的所有记录数目 * @return */public int getAllCounts(){int num=0;// 使用ContentResolver查找联系人数据Cursor cursor = mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null,null, null);// 遍历查询结果,获取系统中所有联系人while (cursor.moveToNext()){num++;}cursor.close();return num;}}

更多相关文章

  1. Android的系统通知栏小例子
  2. Android获取系统中的其他应用信息
  3. Android中通过代码检测系统是否有root权限
  4. android联系人过滤
  5. Android 系统中GPS Location Service 的实现与架构
  6. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框
  7. H3 android 系统编译
  8. Android 多媒体系统
  9. 安卓4.X系统 增加蓝牙接收文件类型

随机推荐

  1. 【Android】线性布局和相对布局的比较
  2. Android布局文件中的各种属性
  3. Android 模拟器 无法上网问题
  4. android布局属性
  5. Android(安卓)通过Socket 和服务器通讯
  6. 详解ImageView的CENTER_CROP,CENTER_INSI
  7. android 开发不容错过的网站
  8. android 中margin,padding,border的区别
  9. 安卓开发笔记(三)android 相对布局属性
  10. Android之布局属性归纳