Android 2.0中电话本contact的读写操作(增删改查一)

一.前言

1.1 Android的电话本的机制.

Android的电话本通过contentProvider封装好的。我们只要通过sdk提供的Uri和字段来对其进行增、删、改、查。

1.2 权限

  
  
  
  
  1. <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission> 
  2.    <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> 

1.3 找到ContentProvider维护的Sqlist数据库文件( .db)

ContentProvider其实自己管理一个Sqlist数据库文件( .db)。这个文件的路径为/data/data/com.android.providers.contacts/databases/contacts2.db。如图:


 


 

1.4 查看ContentProvider维护的Sqlist数据库文件( .db)

在模拟器中的电话本里创建几个联系人,打开1.2中的.db文件,可以用数据库查看工具SQLite Expert Professional打开看下,如图:

从上图,可以看出左边是.db文件的表,点开各表后可以看出主要的表有raw_contacts,contacts,data


 

二. api
 

2.1 三张主表.

从api中可以看到android.provider.ContactsContract是sdk2.0的类库,从api和上面的图都可以看出关于电话本主要信息都存在 ContactsContract.Data ContactsContract.RawContacts ContactsContract.Contacts 三张表里

2.1.1 以上三张表的关联关系.

ContactsContract.Data, ContactsContract.RawContacts, ContactsContract.Contacts 三张表的关联,

ContactsContract.RawContacts表里包含ContactsContract.Contacts的contact_id;ContactsContract.Data表里有ContactsContract.RawContacts的raw_contact_id,和ContactsContract.Contacts的contact_id

 

2.2 各数据对应的类库,电话本各字段的数据结构

2.2.1 Email 对应ContactsContract.CommonDataKinds.Email

 

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_HOME
  • TYPE_WORK
  • TYPE_OTHER
  • TYPE_MOBILE

 

String LABEL DATA3  
Email数据有三个字段存储:ADDRESS为Email值;TYPE为类型,当为自定义(TYPE_CUSTOM)时,LABEL字段要写入用户自定义的类型;

 

2.2.2 IM 对应 ContactsContract.CommonDataKinds.Im

 

Type Alias Data column
String DATA DATA1  
int TYPE DATA2 Allowed values are:

 

  • TYPE_CUSTOM. Put the actual type in LABEL.
  • TYPE_HOME
  • TYPE_WORK
  • TYPE_OTHER

 

String LABEL DATA3  
String PROTOCOL DATA5

Allowed values:

  • PROTOCOL_CUSTOM. Also provide the actual protocol name as CUSTOM_PROTOCOL.
  • PROTOCOL_AIM
  • PROTOCOL_MSN
  • PROTOCOL_YAHOO
  • PROTOCOL_SKYPE
  • PROTOCOL_QQ
  • PROTOCOL_GOOGLE_TALK
  • PROTOCOL_ICQ
  • PROTOCOL_JABBER
  • PROTOCOL_NETMEETING

 

String CUSTOM_PROTOCOL DATA6

Im有5个字段

 

2.2.3 Phone 对应 ContactsContract.CommonDataKinds.Phone

 

Type Alias Data column
String NUMBER DATA1  
int TYPE DATA2 Allowed values are:

 

  • TYPE_CUSTOM. Put the actual type in LABEL.
  • TYPE_HOME
  • TYPE_MOBILE
  • TYPE_WORK
  • TYPE_FAX_WORK
  • TYPE_FAX_HOME
  • TYPE_PAGER
  • TYPE_OTHER
  • TYPE_CALLBACK
  • TYPE_CAR
  • TYPE_COMPANY_MAIN
  • TYPE_ISDN
  • TYPE_MAIN
  • TYPE_OTHER_FAX
  • TYPE_RADIO
  • TYPE_TELEX
  • TYPE_TTY_TDD
  • TYPE_WORK_MOBILE
  • TYPE_WORK_PAGER
  • TYPE_ASSISTANT
  • TYPE_MMS

 

String LABEL DATA3

2.2.4 Postal address 通讯地址 对应 ContactsContract.CommonDataKinds.StructuredPostal

 

 

Type Alias Data column
String FORMATTED_ADDRESS DATA1  
int TYPE DATA2 Allowed values are:

 

  • TYPE_CUSTOM. Put the actual type in LABEL.
  • TYPE_HOME
  • TYPE_WORK
  • TYPE_OTHER

 

String LABEL DATA3  
String STREET DATA4  
String POBOX DATA5 Post Office Box number
String NEIGHBORHOOD DATA6  
String CITY DATA7  
String REGION DATA8  
String POSTCODE DATA9  
String COUNTRY DATA10

最长用的有 TYPE:类型;STREET:街道;CITY:市;REGION:省;POSTCODE:邮政编码;

你可能感兴趣的:(android,封装,contact,的,电话本)