权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
跳转通讯录界面
findViewById(R.id.btn_select_contact).setOnClickListener(v -> {
new RxPermissions(this)
.requestEach(Manifest.permission.READ_CONTACTS)
.subscribe(permission -> {
if (permission.granted) {
//跳转到通讯录选择界面
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, REDE_CONTACT);
}
});
});
处理返回数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REDE_CONTACT) {
try {
Uri uri = data.getData();
ContentResolver cr = this.getContentResolver();
Cursor cursor = cr.query(uri, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
String nameStr = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String phoneStr = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
cursor.close();
name.setText(nameStr);
phoneNum.setText(phoneStr);
} else {
new Throwable("数据库游标不存在");
}
} catch (Throwable throwable) {
new Throwable("未知错误");
}
}
效果: