**:
更多:1.首先手機新增幾個聯絡人
2.然後在此路徑下可以找到檔案:/data/data/com.android.providers.contacts/databases/contact2.db
3.匯出檔案,將其匯入視覺化資料庫管理器當中(這裡用的是sqlite expert personal)
我去。。這麼多表? 無從下手有沒有?別著急,這裡雖然表很多,其實要用的只有4張表,這裡給大家標註下
下面分別對這4張表分別說明:
1、contacts表
_id :表的id,主要用於其它表通過contacts 表中的id可以查到相應的資料。
display_name: 聯絡人名稱
photo_id:頭像的id,如果沒有設定聯絡人頭像,這個欄位就為空
times_contacted:聯絡歷史的次數
last_time_contacted: 最後的通話時間
lookup :是乙個持久化的儲存,因為使用者可能會改名,但是它改不了lookup
該錶儲存了本機儲存的所有聯絡人,每個聯絡人佔一行,該錶儲存了聯絡人的contactid、聯絡次數、最後一次聯絡的時間、是否含有號碼、是否被新增到收藏夾等資訊。
2、raw_contacts表
version :版本號,用於監聽變化
deleted :刪除標誌, 0為預設 1 表示這行資料已經刪除
display_name : 聯絡人名稱
last_time_contacts : 最後聯絡的時間
該錶儲存了所有建立過的手機聯絡人,每個聯絡人佔一行,表裡有一列標識該聯絡人是否被刪除,該錶儲存了兩個id: rawcontactid和contactid,從而將contacts表和raw_contacts表聯絡起來。該錶儲存了聯絡人的rawcontactid、contactid、聯絡次數、最後一次聯絡的時間、是否被新增到收藏夾、顯示的名字、用於排序的漢語拼音等資訊。
3、mimetypes 表
該錶定義了所有的mimetypeid,即聯絡人的各個欄位的唯一標誌。
4、data表
raw_contact_id:通過raw_contact_id可以找到 raw_contact表中相對的資料。
data1 到 data15 這裡儲存著聯絡人的資訊 聯絡人名稱 聯絡人**號碼 電子郵件 備註 等等。
該錶儲存了所有建立過的手機測聯絡人的所有資訊,每個欄位佔一行 ,該錶儲存了兩個id: mimetypeid和rawcontactid,從而將data表和raw_contacts表聯絡起來。聯絡人的所有資訊儲存在列data1至data15中,各列中儲存的內容根據mimetypeid的不同而不同。如儲存號碼(mimetypeid=5)的那行資料中,data1列儲存號碼,data2列儲存號碼型別(手機號碼、家庭號碼、工作號碼等)。
下面說下操作聯絡人的方法
首先要是加入這兩個許可權
讀取聯絡人需要步驟如下:
1.先讀取contacts表,獲取contactsid;
2.再在raw_contacts表中根據contactsid獲取rawcontactsid;
3.然後就可以在data表中根據rawcontactsid獲取該聯絡人的各資料了。
新建聯絡人步驟如下:
1.新建聯絡人時, 根據contacts、raw_ contacts兩張表中id的使用情況,自動生成contactid和rawcontactid。
2.android原始碼新建重複姓名的聯絡人的contactid是不重複的,所以會重複顯示。
3.用下面的**新建聯絡人,如果多次新建的聯絡人的姓名是一樣的,生成的contactid也會重複, rawcontactid不會重複,我們在讀取聯絡人的時候可以獲取所有同姓名聯絡人的號碼等資訊,在顯示聯絡人的時候,重複姓名的聯絡人的所有字段資訊都會合併起來顯示為乙個聯絡人。
刪除聯絡人:
非常簡單只需要將raw_contacts表中指定rawcontactid的行刪除,其他表中與之關聯的資料都會自動刪除。
更新聯絡人:
聯絡人的所有資訊都是儲存在data表中,所以要更新聯絡人,我們只需要根據rawcontactid和mimetype修改data表中的內容。
——**「威哥」
Android 聯絡人資料庫操作
android 聯絡人資料庫 contentproviders 是android 系統核心元件之一,contentproviders 封裝了資料的訪問介面 有時候需要更新多行資料,可以選擇呼叫多次contentresolver的對應函式,或者 使用批量操作。當然 後者效能會比較好些 為了使批量更新 ...
android電話聯絡人資料庫
最近做乙個聯絡人方面的專案,包括通訊錄在這記錄一下,希望可以幫到有用的朋友 1.查詢手機所有聯絡人 public void querycontactphonenumber null,null,null,null for int i 0 i cursor.getcount i emitter.onne...
Android中訪問聯絡人資料示例
聯絡人提供了自己contentprovider,因此可以使用contentresolver來訪問它的資料。舉例來說 建立乙個隱式intent final intent pickintent new intent intent.action pick,contactscontract.contacts...