导航

Android学习之获得手机联系人基本信息

Posted on 2011-11-06 17:18  Qamefay  阅读(1280)  评论(0编辑  收藏  举报

直接上代码了...

View Code
 1 Cursor cCursor = getContentResolver().query(Contacts.CONTENT_URI, null,null, null, null);
2 Cursor dCursor;
3 startManagingCursor(cCursor);
4 while (cCursor.moveToNext()) {
5 //直接获得名字
6 System.out.println("姓名:"+ cCursor.getString(cCursor.getColumnIndex(Contacts.DISPLAY_NAME)));
7 //查询Data表,根据Contacts表的id分类
8 dCursor = getContentResolver().query(Data.CONTENT_URI,null,Data.RAW_CONTACT_ID + "=?",new String[] { cCursor.getString(cCursor.getColumnIndex(Contacts._ID)) }, null);
9 startManagingCursor(dCursor);
10 while (dCursor.moveToNext()) {
11 //判断Data表中这一行的MIMETYPE是否为Phone
12 if (dCursor.getString(dCursor.getColumnIndex(Data.MIMETYPE)).equals(Phone.CONTENT_ITEM_TYPE)) {//
13 //switchData表中的DATA2的字段的值
14 switch (dCursor.getInt(dCursor.getColumnIndex(Data.DATA2))) {
15 //如果为Phone.TYPE_MOBILE则为手机号码
16 case Phone.TYPE_MOBILE:
17 System.out.println("手机号码为:"+ dCursor.getString(dCursor.getColumnIndex(Data.DATA1)));
18 break;
19 //如果为Phone.TYPE_HOME则为固定电话
20 case Phone.TYPE_HOME:
21 System.out.println("固定电话为:"+ dCursor.getString(dCursor.getColumnIndex(Data.DATA1)));
22 break;
23 }
24 }
25 }
26 }

 

再上contacts数据库中用到的表

这个表存放联系人的一些id什么的.

这个表存放对应contacts表中对应id的一些信息.数据的分类的话就对应mimetype_id.其中的data1,data2等等等,不同的mimetype对应不同的作用,举个例子,比如说mimetype为phone,则data1存放的就是电话号码,而data2存放的就是分类,比如手机号码,固定电话号码,公司号码等等,其他的自己实践一下就知道了。

 

我们就可以通过mimetype来判断Data存放的到底是什么数据.

 

我是用火狐的SQLite Manager来浏览数据库的,只要把对应数据库导出来即可用SQLite Manager来打开了。数据库在data/data下,好多,自己找自己想看的.