- 存储联系人的model
…略
- 通过ContentResolver查询数据存储到model
private static final String[] PHONE_PROJECTION = new String[] {
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.PHOTO_ID,
ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY
};
private List<UserDetail> getContactInfo() {
List<UserDetail> contacts = new ArrayList<>();
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
PHONE_PROJECTION, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
UserDetail userDetail = new UserDetail();
long contactId = cursor.getLong(cursor.getColumnIndex(ContactsContract.
CommonDataKinds.Phone.CONTACT_ID));
String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.
CommonDataKinds.Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.
CommonDataKinds.Phone.NUMBER));
long photoId = cursor.getLong(cursor.getColumnIndex(ContactsContract.
CommonDataKinds.Phone.PHOTO_ID));
if (!TextUtils.isEmpty(displayName)) {
User user = new User();
user.setUserName(displayName);
userDetail.setUser(user);
}
if (!TextUtils.isEmpty(number)) {
userDetail.setPhone(number);
}
if (photoId > 0) {
Uri uri = ContentUris.withAppendedId(ContactsContract
.Contacts.CONTENT_URI, contactId);
String headPortrait = RealPathUtils.getRealPathFromURI(this, uri);
userDetail.setHeadPortrait(headPortrait);
}
contacts.add(userDetail);
}
cursor.close();
}
return contacts;
}
- 设置权限(如果是Android 6.0以上还需要动态申请权限)
<uses-permission android:name="android.permission.READ_CONTACTS"/>