Android 獲取通訊錄信息

啟動(dòng)通訊錄頁(yè)面獲取用戶(hù)點(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ù)類(lèi)似一個(gè)單個(gè)數(shù)據(jù)庫(kù)表

// ContentResolver實(shí)例帶的方法可實(shí)現(xiàn)找到指定的ContentProvider并獲取到ContentProvider的數(shù)據(jù)

ContentResolver reContentResolverol = getContentResolver();

// URI,每個(gè)ContentProvider定義一個(gè)唯一的公開(kāi)的URI,用于指定到它的數(shù)據(jù)集

Uri contactData = data.getData();

Log.e("tag_uri= ", contactData);

// 查詢(xún)就是輸入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表中的電話(huà)號(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();

//查詢(xún)數(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

//查詢(xún)電話(huà)類(lèi)型的數(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();

//查詢(xún)Email類(lèi)型的數(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());

//查詢(xún)==地址==類(lèi)型的數(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());

//查詢(xún)==公司名字==類(lèi)型的數(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();

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,530評(píng)論 3 416
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,407評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,981評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,759評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,204評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,415評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,955評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,650評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,892評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,675評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,967評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容

  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線(xiàn)程,因...
    小菜c閱讀 6,483評(píng)論 0 17
  • 臨近期末,目前在進(jìn)行Android課程設(shè)計(jì),對(duì)于我這個(gè)壓根不怎么學(xué)習(xí)的孩子來(lái)說(shuō),剛開(kāi)始的完全是懵逼的,后來(lái)花兩天時(shí)...
    站在冰箱上的姑娘閱讀 24,027評(píng)論 5 41
  • 2017年5月17日 Kylin_Wu 標(biāo)注(★☆)為考綱明確給出考點(diǎn)(必考) 常見(jiàn)手機(jī)系統(tǒng)(★☆) And...
    Azur_wxj閱讀 1,829評(píng)論 0 10
  • 當(dāng)想要實(shí)現(xiàn)八個(gè)燈亮滅得時(shí)候需要8個(gè)IO口,占用單片機(jī)端口,此時(shí)用一個(gè)移位寄存器只需三個(gè)口就能實(shí)現(xiàn)接八個(gè)燈。今天就學(xué)...
    陶雪婷a閱讀 157評(píng)論 0 0
  • 當(dāng)我第一次看到你,就被深深吸引,我迫不及待的想投進(jìn)你的懷抱,感受你那清澈的溫柔。 可是父親拉住了我,還說(shuō):“獨(dú)樂(lè)不...
    存鳳呢姑娘黃鶯閱讀 636評(píng)論 7 4