Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> android聯系人信息的存儲結構

android聯系人信息的存儲結構

編輯:Android開發教程

在新的Contacts API中,聯系人數據被放到三張表中:Contacts、RawContacts和Data。這樣可以幫助系統更好地存儲與管理一個聯系人的多個帳戶的信息。

一、寫在前面

1.聯系人的內容是添加在一個數據庫中的

com.android.providers.contacts//聯系人的相關(數據庫共享者的)應用

這個數據庫文件就存在:data/data/com.android.providers.contacts/database下

contact2.db

2.聯系人的各項數據,聯系人的電話,email等存在data表中

raw_contacts表和data表是一對多的。

Data表存儲了聯系人的詳細信息,表中的每一行存儲一個特定類型的信息,比如Email、Address或Phone。每一行通過一個mimetype_id的字段來表示該行存儲的是什麼類型的數據,該字段引用了mimetyps表,此表存儲了常用的數據類型。

如果data表該行存的是電話,那麼data1用來存電話,data2用來存電話的類型,比如是家庭電話還是手機等。

如果data表該行存的是姓和名,那麼data1用來存姓和名,data2存的名字,data3存姓。

如果該行存的是郵箱,那麼data1用來存郵箱的地址,data2用來存email的類型。

即該行主數據不同,對應的data1-data15表示的含義也是不同的。因此,我們使用contentprovider增加姓名、電話、郵件等等,都是操作的data表,而不是raw_contacts表,也不是contacts表。

3.cells表用來存呼叫記錄

4.raw_contacts表

display_name是用來存放姓加名的組合的,我們從使用contentprovider的時候不能直接往raw_contacts表的該字段添加姓名。正確的做法是向data表插入姓名,當data表中插入姓名的時候,才會發出update更新raw_contacts.中的姓名字段,這個字段是用來快速的得到聯系人名字的。

通過這個表的id和data表中的一個外鍵rawcontact_id,就可以知道某幾行(如姓名行,電話行,郵件行等)屬於哪個聯系人的信息。

我從自己的小米手機通訊錄中導出的各種聯系人數據庫:

二、contact表

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved