实现效果:
我们知道,在应用中经常需要获取某一个联系人的姓名和电话号码,并返回。有两种方式可以实现,一种是比较简单的,也就是调用系统的选择联系人的界面,通过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
如果发现问题欢迎指正。