华为手机测试的时候发现设置的type不同,通讯录显示的页面数据也不同。
1.使用ContactsContract.Contacts.CONTENT_TYPE类型时:
Intent i = new Intent(Intent.ACTION_PICK);
i.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivityForResult(i, 0);
2.使用ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE类型时:
Intent i = new Intent(Intent.ACTION_PICK);
i.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(i, 0);
3.使用"vnd.android.cursor.dir/phone"类型时:
Intent i = new Intent(Intent.ACTION_PICK);
i.setType("vnd.android.cursor.dir/phone");
startActivityForResult(i, 0);
根据需求不同显示的数据不同,回调数据解析的方式也不同,下面给出两种解析方式(只查询了手机号和姓名):
1.第一种方式
/**
* 从通讯录回调的结果显示
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
Uri uri = data.getData();
if (uri != null) {
Cursor cursor = getContentResolver()
.query(uri, new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME },
null, null, null);
while (cursor.moveToNext()) {
String number = cursor.getString(0);
String phoneNum = number.replaceAll("-", "");
etPhone.setText(phoneNum);
etPhone.setSelection(phoneNum.length());
String name = cursor.getString(1);
}
cursor.close();
}
}
}
2.第二种方式
/**
* 从通讯录回调的结果显示
* @param requestCode
* @param resultCode
* @param data
*/
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 0:
if (data == null) {
return;
}
Uri uri = data.getData();
//得到ContentResolver对象
ContentResolver cr = getContentResolver();
//取得电话本中开始一项的光标
Cursor cursor=cr.query(uri,null,null,null,null);
if(cursor!=null)
{
cursor.moveToFirst();
//取得电话号码
String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);
if(phone != null){
phone.moveToFirst();
String phoneNum = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
etPhone.setText(phoneNum);
etPhone.setSelection(phoneNum.length());
}
phone.close();
cursor.close();
}
break;
default:
break;
}
}