实现效果:
我们知道,在应用中经常需要获取某一个联系人的姓名和电话号码,并返回。有两种方式可以实现,一种是比较简单的,也就是调用系统的选择联系人的界面,通过startActivityForResult来调用,在onActivityResult中处理返回的结果。
下面我们看看具体是如何实现的:
private static final int CONTACT_PICKER_RESULT = 0;
/**
* launch System contact picker Activity
*
* 启动系统的挑选联系人的Activity
* */
private void launchContactPicker()
{
Intent i = new Intent(Intent.ACTION_PICK);
i.setType(Phone.CONTENT_TYPE);
startActivityForResult(i, CONTACT_PICKER_RESULT);
}
@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK)
{
switch (requestCode)
{
//handle the result...
//处理返回的结果
case CONTACT_PICKER_RESULT:
if (data == null)
{
return;
}
Uri uri = data.getData();
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
String name = cursor.getString(cursor.getColumnIndexOrThrow(Phone.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndexOrThrow(Phone.NUMBER));
etShowContact.setText(name + number);
break;
}
}
}
但是这样做有一个问题。一次只能选择一个联系人。那么如何实现可以同时选择多个联系人呢?目前我知道的方法只有这样做:自己获取所有联系人的信息,然后从这些信息中实现多选。下次我会展示一个我的做法给大家看看。
Demo下载地址:https://github.com/michaelye/DemoChooseContactBySystem
如果发现问题欢迎指正。