Android 聯絡人資料庫表詳解

2021-08-09 10:10:03 字數 2875 閱讀 3959

**:

更多: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...