直接上代碼了...
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存放的到底是什麼資料.
我是用Firefox的SQLite Manager來瀏覽資料庫的,只要把對應資料庫匯出來即可用SQLite Manager來開啟了。資料庫在data/data下,好多,自己找自己想看的.