Android 獲取聯絡人姓名與電話號碼
阿新 • • 發佈:2019-01-06
許可權
<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("未知錯誤");
}
}