啟動(dòng)通訊錄頁(yè)面獲取用戶點(diǎn)擊的 item 的數(shù)據(jù)(姓名讥耗、手機(jī)號(hào))
//啟動(dòng)通訊錄頁(yè)面
startActivityForResult(newIntent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_UPI),0);
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
// ContentProvider展示數(shù)據(jù)類似一個(gè)單個(gè)數(shù)據(jù)庫(kù)表
// ContentResolver實(shí)例帶的方法可實(shí)現(xiàn)找到指定的ContentProvider并獲取到ContentProvider的數(shù)據(jù)
ContentResolver reContentResolverol = getContentResolver();
// URI,每個(gè)ContentProvider定義一個(gè)唯一的公開的URI,用于指定到它的數(shù)據(jù)集
Uri contactData = data.getData();
Log.e("tag_uri= ", contactData);
// 查詢就是輸入U(xiǎn)RI等參數(shù),其中URI是必須的,其他是可選的,如果系統(tǒng)能找到URI對(duì)應(yīng)的ContentProvider將返回一個(gè)Cursor對(duì)象.
Cursor cursor = reContentResolverol.query(contactData,null,null,null,null);
cursor.moveToFirst();
// 條件為聯(lián)系人ID
String contactId = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
// 獲得DATA表中的電話號(hào)碼种蝶,條件為聯(lián)系人ID,因?yàn)槭謾C(jī)號(hào)碼可能會(huì)有多個(gè)
Cursor phone = reContentResolverol.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "
+ contactId,null,null);
while(phone.moveToNext()) {
String usernumber = phone
.getString(phone
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String name = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
Log.e("tag_x","userName= "+ usernumber +"\n name = "+ name, getClass());
}
}
}
獲取通訊錄列表信息(姓名滋将、手機(jī)號(hào))
ContentResolver contentResolver = context.getContentResolver();
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
//? ? ? ? Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
String[] projection =newString[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};
Cursor cursor = contentResolver.query(uri, projection,null,null,null);
//? ? ? ? cursor.moveToFirst();
while(cursor.moveToNext()){
//拿到聯(lián)系人id 跟name
//? ? ? ? ? ? int id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phone = cursor.getString(cursor.getColumnIndex("data1"));
LogUtil.e("name = "+ name, context.getClass());
LogUtil.e("phone = "+ phone, context.getClass());
String[] columnNames = cursor.getColumnNames();
for(String cName:
columnNames) {
LogUtil.e("cName= "+ cName, context.getClass());
}
}
所需權(quán)限
獲取聯(lián)系人其他信息
參考鏈接
http://www.cnblogs.com/zhujiabin/p/6645551.html
參考代碼
publicvoidtestGetAllContact()throwsThrowable
{
//獲取聯(lián)系人信息的Uri
Uri uri = ContactsContract.Contacts.CONTENT_URI;
//獲取ContentResolver
ContentResolver contentResolver = ContactListActivity.this.getContentResolver();
//查詢數(shù)據(jù)盛泡,返回Cursor
Cursor cursor = contentResolver.query(uri,null,null,null,null);
List> list =newArrayList>();
while(cursor.moveToNext())
{
Map map =newHashMap();
StringBuilder sb =newStringBuilder();
//獲取聯(lián)系人的ID
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
//獲取聯(lián)系人的姓名
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
//構(gòu)造聯(lián)系人信息
sb.append("contactId=").append(contactId).append(",Name=").append(name);
map.put("name", name);
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));//聯(lián)系人ID
//查詢電話類型的數(shù)據(jù)操作
Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,
null,null);
while(phones.moveToNext())
{
String phoneNumber = phones.getString(phones.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
//添加Phone的信息
sb.append(",Phone=").append(phoneNumber);
map.put("mobile", phoneNumber);
}
phones.close();
//查詢Email類型的數(shù)據(jù)操作
Cursor emails = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID +" = "+ contactId,
null,null);
while(emails.moveToNext())
{
String emailAddress = emails.getString(emails.getColumnIndex(
ContactsContract.CommonDataKinds.Email.DATA));
//添加Email的信息
sb.append(",Email=").append(emailAddress);
Log.e("emailAddress", emailAddress);
map.put("email", emailAddress);
}
emails.close();
//Log.i("=========ddddddddddd=====", sb.toString());
//查詢==地址==類型的數(shù)據(jù)操作.StructuredPostal.TYPE_WORK
Cursor address = contentResolver.query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID +" = "+ contactId,
null,null);
while(address.moveToNext())
{
String workAddress = address.getString(address.getColumnIndex(
ContactsContract.CommonDataKinds.StructuredPostal.DATA));
//添加Email的信息
sb.append(",address").append(workAddress);
map.put("address", workAddress);
}
address.close();
//Log.i("=========ddddddddddd=====", sb.toString());
//查詢==公司名字==類型的數(shù)據(jù)操作.Organization.COMPANY? ContactsContract.Data.CONTENT_URI
String orgWhere = ContactsContract.Data.CONTACT_ID +" = ? AND "+ ContactsContract.Data.MIMETYPE +" = ?";
String[] orgWhereParams =newString[]{id,
ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
Cursor orgCur = contentResolver.query(ContactsContract.Data.CONTENT_URI,
null, orgWhere, orgWhereParams,null);
if(orgCur.moveToFirst()) {
//組織名 (公司名字)
String company = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
//職位
String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
sb.append(",company").append(company);
sb.append(",title").append(title);
map.put("company", company);
map.put("title", title);
}
orgCur.close();
list.add(map);
Log.i("=========orgName=====", sb.toString());//查看所有的數(shù)據(jù)
Log.e("=========map=====", map.toString());//有很多數(shù)據(jù)的時(shí)候辜纲,只會(huì)添加一條? 例如郵箱兜粘,
}
Log.i("=========list=====", list.toString());//
cursor.close();
}