获取用户通讯录
权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
获取通讯录列表
Cursor localCursor = activity.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
new String[]{ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME}, null, null, null);
if (localCursor != null && localCursor.moveToFirst()) {
do {
long id = localCursor.getLong(0);
String name = localCursor.getString(1);
String[] phoneProjection = new String[]{
ContactsContract.CommonDataKinds.Phone.NUMBER
};
Cursor phonesCusor = activity.getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
phoneProjection,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + id,
null,
null);
if (phonesCusor != null && phonesCusor.moveToFirst()) {
do {
String phone = phonesCusor.getString(0);
phone = TextUtils.isEmpty(phone) ? "" : phone.replaceAll(" ", "");
} while (phonesCusor.moveToNext());
phonesCusor.close();
}
} while (localCursor.moveToNext());
localCursor.close();
}
通讯录列表页面获取用户名和手机号码
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
if (intent.resolveActivity(getPackageManager()) == null) {
intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
}
startActivityForResult(intent, requestCode);
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (Activity.RESULT_OK == resultCode) {
if (data == null || data.getData() == null) return;
getPhone(requestCode, data.getData());
}
}
public static List<String> getUserContactInfoByUri(Activity activity, Uri uri) {
if (activity == null || uri == null) return null;
List<String> list = new ArrayList<>(2);
Cursor cursor = null;
Cursor phoneCursor = null;
try {
cursor = activity.getContentResolver().query(uri, new String[]{ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME},
null, null, null);
if (cursor != null && cursor.getColumnCount() > 0) {
cursor.moveToFirst();
list.add(0, cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
phoneCursor = activity.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER},
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId,
null, null);
if (phoneCursor != null && phoneCursor.getColumnCount() > 0) {
phoneCursor.moveToFirst();
list.add(1, phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
}
} catch (Exception e) {
list = null;
e.printStackTrace();
} finally {
if (phoneCursor != null && !phoneCursor.isClosed()) {
phoneCursor.close();
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
}
return list;
}