android 聯絡人詳解

2021-09-02 08:40:47 字數 2295 閱讀 7938

操作聯絡人工程需要許可權,不然會報錯。

android聯絡人是用資料庫儲存的,資料庫結構如下:

raw_contacts表:

主要儲存了每個聯絡個的唯一表示欄位_id欄位。

data表:

raw_contact_id就是raw_contacts中的_id欄位,所有raw_contact_id值相同的都是

同乙個聯絡人的屬性資訊。

mimetype_id 字段就是表示單點這條記錄是預設聯絡的什麼屬性(例如:手機號,郵箱)

mimetypes表:

_id欄位就是data表中的mimetype_id,

mimetype就是對應的聯絡人屬性型別。某乙個miemetype又有子型別(例如:miemetype 為手機號,

手機號又分為,工作手機號,住宅手機號(android裡1開頭的都認為是手機號,其他為座機號)),

這些子型別標識存在data表中的data1-data15某個欄位中,子型別的解釋在api 參考文件裡。一條記錄mimetype

型別決定data1-data15的意義。例如:

mimetype姓名,data1 為全稱,則data2存放名,data3存放姓。

mimetype**,data1存放**號碼,則data2存放型別,比如手機、家電(以乙個數值表示,對應關係參看api,在api哪個地方下面的內容會說);

知道了這些表是存聯絡人的,該如何訪問呢

代表聯絡人各個表的類是level5以前是contacts,之後是contactscontract,這個類裡面有很多的內部類,

contactscontract.rawcontacts就是代表了表raw_contacts(可以查詢所有聯絡人的id)

contactscontract.data就代表了表data(可以查詢每個id聯絡人的詳細資訊)

這錶的訪問是通過uri在訪問的,例如raw_contacts表的訪問uri是contactscontract.rawcontacts.content_uri

查詢某個字段可以通過contactscontract.rawcontacts的代表表字段常量,例如查_id欄位對應的contactscontract.rawcontacts的常量是contactscontract.rawcontacts._id。

例如(resolver.query(rawcontacts.content_uri,new string , null, null, null); // 獲得_id屬性)

得帶了raw_contact表中的_id值就可以查這個_id對應聯絡人的詳細資訊了。

例如:resolver.query(data.content_uri, new string

這裡得到的data.mimetype就是mimetype欄位,對應的字元mimetypes表中mimetype欄位的字串,應該是內部做了聯合查詢。

有了data.mimetype型別,就可以參看api參考知道用了data1-data15那些字段,各個欄位的含義,含義在contactscontract.commondatakinds類中,contactscontract.commondatakinds乙個內部類代表一種mimetype。

例如mimetype.equals(email.content_item_type);

mimetype就是型別字串,email就是郵件型別對應的類,這個類中詳細說明了data1-data15的含義。例如:

type alias data column

string address data1 email address itself.

int type data2 allowed values are:

type_custom. put the actual type in label.

type_work

type_other

string label data3 

address 代表郵件位址摘data1中

郵件型別(工作郵件type_work,自定義型別type_custom,其他type_other)。

這些子型別有的廠商不需要那麼詳細就用了部分定義,但都遵循了這個標準結構都是相同的。

下面付**,在log列印了所有詳細資訊,大家不需要那麼詳細的可以擷取用。

Android操作聯絡人

android系統中的聯絡人也是通過contentprovider來對外提供資料的,我們這裡實現獲取所有聯絡人 通過 號碼獲取聯絡人 新增聯絡人 使用事務新增聯絡人。獲取所有聯絡人 1.android系統中的聯絡人也是通過contentprovider來對外提供資料的 2.資料庫路徑為 data d...

Android操作聯絡人

一 聯絡人資料庫 聯絡人的資料庫檔案的位置 data data com.android.providers.contacts databases.contacts2.db 資料庫中重要的幾張表 1 contacts表 該錶儲存了所有的手機測聯絡人,每個聯絡人佔一行,該錶儲存了聯絡人的 contact...

原創android聯絡人列表

通過contactscontract類獲取 號碼的改變 android中contactscontract獲取聯絡人的方法 android通訊錄查詢篇 contactscontract.data開篇 content provider,uri 和 contactscontract 2011 androi...