Android 获取通讯录信息

启动通讯录页面获取用户点击的 item 的数据(姓名、手机号)

//启动通讯录页面

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展示数据类似一个单个数据库表

// ContentResolver实例带的方法可实现找到指定的ContentProvider并获取到ContentProvider的数据

ContentResolver reContentResolverol = getContentResolver();

// URI,每个ContentProvider定义一个唯一的公开的URI,用于指定到它的数据集

Uri contactData = data.getData();

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

// 查询就是输入URI等参数,其中URI是必须的,其他是可选的,如果系统能找到URI对应的ContentProvider将返回一个Cursor对象.

Cursor cursor = reContentResolverol.query(contactData,null,null,null,null);

cursor.moveToFirst();

// 条件为联系人ID

String contactId = cursor.getString(cursor

.getColumnIndex(ContactsContract.Contacts._ID));

// 获得DATA表中的电话号码,条件为联系人ID,因为手机号码可能会有多个

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());

}

}

}

获取通讯录列表信息(姓名、手机号)

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()){

//拿到联系人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());

}

}

所需权限


获取联系人其他信息

参考链接

http://www.cnblogs.com/zhujiabin/p/6645551.html

参考代码

publicvoidtestGetAllContact()throwsThrowable

{

//获取联系人信息的Uri

Uri uri = ContactsContract.Contacts.CONTENT_URI;

//获取ContentResolver

ContentResolver contentResolver = ContactListActivity.this.getContentResolver();

//查询数据,返回Cursor

Cursor cursor = contentResolver.query(uri,null,null,null,null);

List> list =newArrayList>();

while(cursor.moveToNext())

{

Map map =newHashMap();

StringBuilder sb =newStringBuilder();

//获取联系人的ID

String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

//获取联系人的姓名

String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

//构造联系人信息

sb.append("contactId=").append(contactId).append(",Name=").append(name);

map.put("name", name);

String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));//联系人ID

//查询电话类型的数据操作

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类型的数据操作

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());

//查询==地址==类型的数据操作.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());

//查询==公司名字==类型的数据操作.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());//查看所有的数据

Log.e("=========map=====", map.toString());//有很多数据的时候,只会添加一条  例如邮箱,

}

Log.i("=========list=====", list.toString());//

cursor.close();

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,351评论 0 17
  • 临近期末,目前在进行Android课程设计,对于我这个压根不怎么学习的孩子来说,刚开始的完全是懵逼的,后来花两天时...
    站在冰箱上的姑娘阅读 23,854评论 5 41
  • 2017年5月17日 Kylin_Wu 标注(★☆)为考纲明确给出考点(必考) 常见手机系统(★☆) And...
    Azur_wxj阅读 1,795评论 0 10
  • 当想要实现八个灯亮灭得时候需要8个IO口,占用单片机端口,此时用一个移位寄存器只需三个口就能实现接八个灯。今天就学...
    陶雪婷a阅读 146评论 0 0
  • 当我第一次看到你,就被深深吸引,我迫不及待的想投进你的怀抱,感受你那清澈的温柔。 可是父亲拉住了我,还说:“独乐不...
    存凤呢姑娘黄莺阅读 615评论 7 4