废话不多少直接开整。
效果图镇楼
1.首先要获取权限偶。
<!-- 加入读写联系人信息的权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
页面做好后我们分别给三个选择按钮添加监听,并在监听中添加打开通讯录的方法并传入区别三个信息内容的code码。
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.contacts_family_bt:
OpenPhoneBook(0);
break;
case R.id.contacts_friend_bt:
OpenPhoneBook(1);
break;
case R.id.contacts_colleague_bt:
OpenPhoneBook(2);
break;
default:
break;
}
}
在方法区粘入上面代码中所用到的OpenPhoneBook();方法。
private void OpenPhoneBook(int requestCode) {
startActivityForResult(new Intent(
Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI), requestCode);
}
你点击上述按钮后会跳入通讯录界面,选择联系人后会返回当前界面并调用下面方法。我会在代码中以注释的方式说明其相关用途。(将下面方法粘入方法区即可)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//声明两个承载调回信息的字符串(用户名和电话号码)
String username;
String usernumber;
if (resultCode == Activity.RESULT_OK) {
ContentResolver reContentResolverol = getContentResolver();
Uri contactData = data.getData();
Cursor cursor = reContentResolverol.query(contactData, null, null, null, null);
cursor.moveToFirst();
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = reContentResolverol.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId,
null,
null);
//以上代码是为从通信录中调出信息做准备工作,我怕我讲完你们脑袋都大了,这里就不深究了,粘上就好。
while (phone.moveToNext()) {
//从通讯录中获取姓名和电话号赋给变量
username = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
usernumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// 根据我们之前传入的code码来区分回调的信息是点击哪个按钮的时候回传的,并赋给相对应的属性。
switch (requestCode){
case 0://等于“0”时代表回传信息是点击家人后回传的,将值设置给家人
family = username+usernumber;
family_et.setText(family);
break;
case 1://“1”代表朋友
friend = username+usernumber;
friend_et.setText(friend);
break;
case 2://“2”代表另一个朋友
colleague = username+usernumber;
colleague_et.setText(colleague);
break;
default:
break;
}
}
}
}
还有什么不明白的地方可以在博客下留言,喜欢记得点赞偶。