廢話不多少直接開整。
效果圖鎮(zhèn)樓
這里寫圖片描述
1.首先要獲取權(quán)限偶。
<!-- 加入讀寫聯(lián)系人信息的權(quán)限 -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
頁面做好后我們分別給三個(gè)選擇按鈕添加監(jiān)聽,并在監(jiān)聽中添加打開通訊錄的方法并傳入?yún)^(qū)別三個(gè)信息內(nèi)容的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;
}
}
在方法區(qū)粘入上面代碼中所用到的OpenPhoneBook();方法。
private void OpenPhoneBook(int requestCode) {
startActivityForResult(new Intent(
Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI), requestCode);
}
你點(diǎn)擊上述按鈕后會(huì)跳入通訊錄界面,選擇聯(lián)系人后會(huì)返回當(dāng)前界面并調(diào)用下面方法。我會(huì)在代碼中以注釋的方式說明其相關(guān)用途。(將下面方法粘入方法區(qū)即可)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//聲明兩個(gè)承載調(diào)回信息的字符串(用戶名和電話號(hào)碼)
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);
//以上代碼是為從通信錄中調(diào)出信息做準(zhǔn)備工作,我怕我講完你們腦袋都大了,這里就不深究了,粘上就好。
while (phone.moveToNext()) {
//從通訊錄中獲取姓名和電話號(hào)賦給變量
username = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
usernumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// 根據(jù)我們之前傳入的code碼來區(qū)分回調(diào)的信息是點(diǎn)擊哪個(gè)按鈕的時(shí)候回傳的,并賦給相對(duì)應(yīng)的屬性。
switch (requestCode){
case 0://等于“0”時(shí)代表回傳信息是點(diǎn)擊家人后回傳的,將值設(shè)置給家人
family = username+usernumber;
family_et.setText(family);
break;
case 1://“1”代表朋友
friend = username+usernumber;
friend_et.setText(friend);
break;
case 2://“2”代表另一個(gè)朋友
colleague = username+usernumber;
colleague_et.setText(colleague);
break;
default:
break;
}
}
}
}
還有什么不明白的地方可以在博客下留言,喜歡記得點(diǎn)贊偶。