編輯: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,就可以知道某幾行(如姓名行,電話行,郵件行等)屬於哪個聯系人的信息。
我從自己的小米手機通訊錄中導出的各種聯系人數據庫:
1.1 BufferQueue詳解上一小節我們已經看到了BufferQueue,它是SurfaceTextureClient實現本地窗口的關鍵。從邏輯上來推斷,Buffe
Alarm Controller演示如何在Android應用中使用Alarm事件,其功能和java.util.Timer ,TimerTask類似。但Alarm可以即使
要做一個優秀的Android應用,使用到網絡通信技術是必不可少的,很難想象一款沒有網絡交互的軟件最 終能發展得多成功。那麼我們來看一下,一般Android應用程序裡都是怎
Activity分類示例的最後幾個例子是來顯示半透明Activity。例子大同小異。實現Activity的半透明效果主要是通過Style和 Theme來實現的。看看Tra