点击按钮启动Intent进入通讯录
Intent pickContact = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
mCallTelPhone = (Button) view.findViewById(R.id.crime_call_phone);
mCallTelPhone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(pickContact, REQUEST_CONTACT_PHONE);
}
});
通讯录选择号码之后
ContentResolver contentResolver = getActivity().getContentResolver();
// URI,每个ContentProvider定义一个唯一的公开的URI,用于指定到它的数据集 ,这里获取联系人的信息Uri
Uri uri = data.getData();
//在通讯录界面已经选择了需要的项目,所以当前这个Uri对应内容提供器里面就只有一个数据, cursor中就只有一组数据
Cursor cursor = contentResolver.query(uri, null, null, null, null);
cursor.moveToFirst();
//获取当前这个号码
String phoneNum = getContactPhone(cursor);
getContactPhone(Cursor xxx)方法
private String getContactPhone(Cursor cursor) {
//获取Data表中的名字
String usename = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
//获取联系人ID
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
//从CommonDataKinds.Phone表获取联系人号码
Cursor phone = getActivity().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId,
null,
null);
phone.moveToFirst();
//因为上面根据ID值查找 所以结果只有一个
return phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
进入拨号界面
if(phoneNum != null) {
Uri phoneNumberUri = Uri.parse("tel:"+phoneNum);
Intent i = new Intent();
i.setAction(Intent.ACTION_DIAL);
i.setData(phoneNumberUri);
startActivity(i);
}