获取手机联系人
/**获取库Phon表字段**/ private static final String[] PHONES_PROJECTION = new String[]{ Phone.DISPLAY_NAME, Phone.NUMBER}; /**联系人显示名称**/ private static final int PHONES_DISPLAY_NAME_INDEX = 0; /**电话号码**/ private static final int PHONES_NUMBER_INDEX = 1; /**得到手机通讯录联系人信息**/ public static void getPhoneContacts(Activity activity, List<ContactInfo> contactInfos) { ContentResolver resolver = activity.getContentResolver(); // 获取手机联系人 Cursor phoneCursor = resolver.query(Phone.CONTENT_URI, PHONES_PROJECTION, null, null, null); if (phoneCursor != null) { while (phoneCursor.moveToNext()) { ContactInfo contactInfo=new ContactInfo(); //得到手机号码 String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX); //当手机号码为空的或者为空字段 跳过当前循环 if (TextUtils.isEmpty(phoneNumber)) continue; //得到联系人名称 String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX); contactInfo.setContactsName(contactName); contactInfo.setContactsNumber(phoneNumber); contactInfos.add(contactInfo); } //4.0以上的版本会自动关闭 (4.0--14;; 4.0.3--15) if(Integer.parseInt(Build.VERSION.SDK) < 14) { phoneCursor.close(); } } } /**得到手机SIM卡联系人人信息**/ public static void getSIMContacts(Activity activity, List<ContactInfo> contactInfos) { ContentResolver resolver = activity.getContentResolver(); // 获取Sims卡联系人 Uri uri = Uri.parse("content://icc/adn"); Cursor phoneCursor = resolver.query(uri, PHONES_PROJECTION, null, null, null); if (phoneCursor != null) { while (phoneCursor.moveToNext()) { ContactInfo contactInfo=new ContactInfo(); // 得到手机号码 String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX); // 当手机号码为空的或者为空字段 跳过当前循环 if (TextUtils.isEmpty(phoneNumber)) continue; // 得到联系人名称 String contactName = phoneCursor .getString(PHONES_DISPLAY_NAME_INDEX); //Sim卡中没有联系人头像 contactInfo.setContactsName(contactName); contactInfo.setContactsNumber(phoneNumber); contactInfos.add(contactInfo); } //4.0以上的版本会自动关闭 (4.0--14;; 4.0.3--15) if(Integer.parseInt(Build.VERSION.SDK) < 14) { phoneCursor.close(); } } }
大道至简,逻辑起点,记忆关联,直观抽象。。。