歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android入門教程:增刪改查通訊錄

Android入門教程:增刪改查通訊錄

日期:2017/3/1 10:18:00   编辑:Linux編程
一、通訊錄應用介紹

通訊錄應用是Android自帶的應用程序,我們看到此應用的時候,可能只認為這是一個應用,用數據庫存儲數據,但是實際上不是這樣的。

通訊錄是ContentProvider的應用,通訊錄由兩部分組成:

(1)com.android.providers.contacts的ContentProvider:真正存儲數據的ContentProvider

(2)com.android.contacts:運用ContentResolver獲取數據的圖形用戶界面;

二、獲取ContactProvider的源代碼

Android源代碼: http://www.linuxidc.com/Linux/2012-07/64346.htm 用git獲取;

如果要獲取ContactProvider,則安裝git,並打開git bash,輸入

git clone https://android.googlesource.com/platform/packages/providers/ContactsProvider.git 即可;

為何要獲取ContactProvider的源代碼呢?

因為如果要訪問ContentProvider,必須要了解URI的設置(authority,path等);只有查看源代碼才能夠知道;

AndroidManifest.xml為清單文件,列出了ContactProvider的authorities,以及要訪問通訊錄需要的權限;

  1. <uses-permission android:name="android.permission.READ_CONTACTS" />
  2. <uses-permission android:name="android.permission.WRITE_CONTACTS" />
主要的通訊錄程序為ContactsProvider2.java,authorities為:contacts或com.android.contacts;

三、通訊錄數據庫結構介紹

表結構如下:





通訊錄是存放在/data/data/com.android.providers.contacts/databases/contacts2.db,裡面主要的表有:

(1)raw_contacts:存放聯系人的ID,

_id屬性為主鍵,聲明為autoincrement,即不需要手動設置,其他屬性也不需要手動設置就有默認值;

display_name屬性為姓名;

(2)mimetypes:存放數據的類型,比如"vnd.android.cursor.item/name"表示“姓名”類型的數據,"vnd.android.cursor.item/phone_v2"表示“電話”類型的數據;

(3)data:存放具體的數據;

raw_contact_id屬性用來連接raw_contacts表,每條記錄表示一個具體數據;我們主要的數據(email、phone等)都存放在data表;

data1屬性存放總數據;

data2屬性:

-如果此記錄存放姓名,則data2存放名;

-如果此記錄存放電話,則data2存放類型,比如手機、家電;

-如果此記錄存放組織,則data2存放類型,比如公司、其他;

-如果此記錄存放地址,則data2存放類型,比如住宅,單位等;

Copyright © Linux教程網 All Rights Reserved