跳转到系统联系人选择界面,获取相应联系人信息
调用方式:
Intent i = new Intent();
i.setAction(Intent.ACTION_PICK);
i.setData(ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(i, 1);
下面是onActivityResult(int requestCode, int resultCode, Intent data)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String name = "";
String phoneNumber = "";
switch (resultCode) {
case RESULT_OK:
switch (requestCode) {
case 1:
if (data == null) {
return;
}
Uri contactData = data.getData();
if (contactData == null) {
return;
}
Cursor cursor = managedQuery(contactData, null, null, null,
null);
if (cursor.moveToFirst()) {
name = cursor
.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String hasPhone = cursor
.getString(cursor
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
String id = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
if (hasPhone.equalsIgnoreCase("1")) {
hasPhone = "true";
} else {
hasPhone = "false";
}
if (Boolean.parseBoolean(hasPhone)) {
Cursor phones = getContentResolver()
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + id, null, null);
while (phones.moveToNext()) {
phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
}
cursor.close();
}
phoneNumber = phoneNumberFormat(phoneNumber);
Log.i("info", "联系人:"+ name + "--"
+ phoneNumberFormat(phoneNumber));
break;
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
Google官方文档是这样写的:
private void pickContact() {
// Create an intent to "pick" a contact, as defined by the content provider URI
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// If the request went well (OK) and the request was PICK_CONTACT_REQUEST
if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {
// Perform a query to the contact's content provider for the contact's name
Cursor cursor = getContentResolver().query(data.getData(),
new String[] {Contacts.DISPLAY_NAME}, null, null, null);
if (cursor.moveToFirst()) { // True if the cursor is not empty
int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
String name = cursor.getString(columnIndex);
// Do something with the selected contact's name...
}
}
}