80,350
社区成员
发帖
与我相关
我的任务
分享
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, ACTION_CHOOSE_CONTACT)
Intent pickContacts = new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(pickContacts, REQUEST_CONTACTS);
然后根据选择的联系人在onActivityResult获取联系人信息
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode != Activity.RESULT_OK) return;
if(requestCode == REQUEST_CONTACTS && data != null){
Uri contactUri = data.getData();
//在返回的Data中获取联系人姓名及ID
String[] queryFields = new String[]{ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts._ID};
Cursor cursor = getContentResolver().query(contactUri, queryFields, null, null, null);
if (cursor!=null) {
try {
if (cursor.getCount() == 0) {
return;
}
cursor.moveToFirst();
suspect = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
suspectId = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts._ID));
} finally {
cursor.close();
}
}
}
}
最后根据id查询该联系人的信息
Cursor numberCursor = null;
try {
//直接通过ContentResolver从ContactsContract.CommonDataKinds.Phone中查询
numberCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + suspectId,
null, null);
//然而这里怎么都查询不到,原因ContactsContract.CommonDataKinds.Phone表中id
//与mCrime中ID(也就是从ACTION_PICK返回的表中查出来的ID)对不上
if (numberCursor == null || numberCursor.getCount() == 0) {
Toast.makeText(this, "该联系人不存在于你的电话簿中", Toast.LENGTH_SHORT).show();
return;
}
numberCursor.moveToFirst();
String phoneNumber = numberCursor.getString(0);
Uri numberUri = Uri.parse("tel:" + phoneNumber);
Intent pickContacts = new Intent(Intent.ACTION_DIAL, numberUri);
startActivity(pickContacts);
}finally {
if (numberCursor!=null)numberCursor.close();
}
大致流程就是这样