项目需求是从手机通讯录中选择联系人姓名、手机号返回,尝试很多方法未果,终于成功,特此备份。
调起通讯录的方法:
Intent jumpIntent = new Intent(Intent.ACTION_PICK); //从有电话号码的联系人中选取 jumpIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(jumpIntent, SELECT_CONTACT);
回调获取:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode == RESULT_OK){ switch (requestCode){ case SELECT_CONTACT: //选择通讯录联系人返回 if(data == null){ return; } try { if (data.getData() != null) { Cursor cursor = getContentResolver() .query(data.getData(), new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME }, null, null, null); while (cursor.moveToNext()) { //取出该条数据的联系人姓名 String name = cursor.getString(1).replaceAll(" ", ""); //取出该条数据的联系人的手机号 String number = cursor.getString(0).replaceAll(" ", "").replaceAll("-", ""); if(number.length() > 11){ number = number.substring(number.length() - 11, number.length()); } et_connect_phone.setText(number); et_connect_phone.setSelection(number.length()); } cursor.close(); } } catch (Exception e) { e.printStackTrace(); } break; default: break; } } }