在项目开发过程中,选择联系人,并返回所选择联系人的号码,这个小功能偶尔要用到:
在点击事件中添加跳转事件:
Intent intent = new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
XXXXActivity.this.startActivityForResult(intent, 1);
选择号码并返回界面:
/**
* 选择手机号码
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
Uri contactData = data.getData();
Cursor cursor = managedQuery(contactData, null, null, null,
null);
cursor.moveToFirst();
String num = this.getContactPhone(cursor);
inputDeviceKey.setText(num);
// show.setText("所选手机号为:" + num);
}
break;
default:
break;
}
}
/**
* 返回了选择的手机号码
* @param cursor
* @return
*/
private String getContactPhone(Cursor cursor) {
// TODO Auto-generated method stub
int phoneColumn = cursor
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
int phoneNum = cursor.getInt(phoneColumn);
String result = "";
if (phoneNum > 0) {
// 获得联系人的ID号
int idColumn = cursor.getColumnIndex(ContactsContract.Contacts._ID);
String contactId = cursor.getString(idColumn);
// 获得联系人电话的cursor
Cursor phone = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "="
+ contactId, null, null);
if (phone.moveToFirst()) {
for (; !phone.isAfterLast(); phone.moveToNext()) {
int index = phone
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
int typeindex = phone
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);
int phone_type = phone.getInt(typeindex);
String phoneNumber = phone.getString(index);
result = phoneNumber;
// switch (phone_type) {//此处请看下方注释
// case 2:
// result = phoneNumber;
// break;
//
// default:
// break;
// }
}
if (!phone.isClosed()) {
phone.close();
}
}
}
return result;
}
这样就可以返回号码了。