public void pickContact(View v) {
// 如果是需要读取联系人信息,传入的URI为:ContactsContract.Contacts.CONTENT_URI;
// 如果是需要读取手机号码信息传入的URI为:ContactsContract.CommonDataKinds.Phone.CONTENT_URI
Intent intent = new Intent(Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
ActivityUtils.startActivityForResult(this, intent,
Request_Code_PickContact);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) {
return;
}
switch (requestCode) {
case Request_Code_PickContact:
Uri contactData = data.getData();
String[] contact = this.getContactPhone(contactData);
clientName.setText(contact[0]);
phone.setText(contact[1]);
break;
default:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
/**
* 从表中取出联系人和手机号
*
* @param cursor
* @return
*/
private String[] getContactPhone(Uri result) {
printLog(ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
printLog(result);
String ColumnName = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;
String Columnphone = ContactsContract.CommonDataKinds.Phone.NUMBER;
Cursor cursor = getContentResolver().query(result, null, null, null,
null);
cursor.moveToFirst();
int columnNameIndex = cursor.getColumnIndex(ColumnName);
int columnPhoneIndex = cursor.getColumnIndex(Columnphone);
printLog("cursor.getColumnCount():" + cursor.getColumnCount()); // 77 不同的手机不一样
printLog("columnNameIndex:" + columnNameIndex); // 40
printLog("columnPhoneIndex:" + columnPhoneIndex); // 27
String[] res = new String[2];
if (columnNameIndex > 0 && columnNameIndex < cursor.getColumnCount()) {
String stringName = cursor.getString(columnNameIndex);
res[0] = stringName;
}
if (columnPhoneIndex > 0 && columnPhoneIndex < cursor.getColumnCount()) {
String stringPhone = cursor.getString(columnPhoneIndex);
res[1] = stringPhone;
}
if (!cursor.isClosed()) {
cursor.close();
}
return res;
}