android2.0前后实现方式上也有一定的差别:主要是2.0及以上版本联系人API发生了变化,由原来的Contacts变成了ContactsContract。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if ( requestCode == PICK_CONTACT){
if (resultCode == Activity.RESULT_OK){
Uri contactDate = data.getData();
Cursor cur = getContentResolver().query(contactDate, null, null, null, null);
if (cur.moveToFirst()){
String name =
cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
int phoneCount =
cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
String contactID =
cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String number = null;
if ( phoneCount > 0) {
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + contactID, null, null);
if (phones.moveToFirst()) {
do {
// 遍历所有的电话号码
String phoneNumber =
phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String phoneType =
phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
mNumberEdit.setText(phoneNumber);
Toast.makeText(this, phoneNumber + "/" + phoneType, Toast.LENGTH_SHORT).show();
} while (phones.moveToNext());
}
}
}
}
}
}
另外添加权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>