android 2.x與1.x連絡人的資料庫設計有很大不同,在做連絡人相關的開發時,先要確定系統的版本。
boolean mAndroid2 =android.os.Build.VERSION.RELEASE.startsWith("2.");
本文是開發過程中的一些比較整理,適用的是2.x以後的版本。
Overall.
連絡人的主要資料存放在raw_contacts和data表裡,它兩構成主從表關係。
raw_contacts表結構:
data表結構:
每個連絡人在raw_contacts裡有一條記錄,像地址,名稱,email,電話等等資料都在data存放在data裡,這樣設計的好處是易擴充,比如要增加一個連絡人的email地址時,只要在data裡增加一條記錄。
連絡人的資料庫比較複雜,在連絡人相關應用開發中,一般也不直接通過資料庫欄位來操作,主要用視圖(指定的Uri)來操作。
下面說說我在開發工作中用到的一些連絡人的資料。
名字:
Uri: Uri.parse("content://com.android.contacts/data")
PREFIX = "data4"; //名稱首碼
MID_NAME = "data5";//中間名
GIVEN_NAME = "data2";//名字
FAMILY_NAME = "data3";//姓氏
MID_PINYIN="data8"; //中間名拼音
String FAMILY_NAME_PINYIN="data9"; //姓氏拼音
String SUFIX = "data6"; //名稱尾碼
String SUFIX_PINYIN="data7"; //名字拼音
電話:
Uri: Uri.parse("content://com.android.contacts/data/phones"
phone: "data1";//號碼
Type: "data2";//這個欄位是整形值,指示電話類型
類型對應關係如下:
TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_MOBILE = 2;
TYPE_WORK = 3;
TYPE_FAX_WORK = 4;
TYPE_FAX_HOME = 5;
TYPE_PAGER = 6;
TYPE_OTHER = 7;
Email:
Uri:Uri.parse("content://com.android.contacts/data/emails")
Email: "data1";//郵箱地址
Type: "data2";//這個欄位是整形值,指示Email類型
類型對應關係如下:
TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_WORK = 2;
TYPE_OTHER = 3;
TYPE_MOBILE = 4;
地址:
Uri:Uri.parse("content://com.android.contacts/data/postals")
STREET="data4";//街道
CITY="data8";//城市
STATE="data7";//州
ZIP_CODE="data9";//郵遞區號
Type:"data2";//type的類型如下
TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_WORK = 2;
TYPE_OTHER = 3;