• android手机内的通讯录数据库


    今天看了一下 android手机内的通讯录数据库,简单的汇总了一下。

    数据库见附件中的contacts2.db , 里面一共有40个表,34个视图,很庞大,挑几个重点的看一下。

    1.表Raw_contacts

    假定设备上有2个账户:

    · Neroseagate3@gmail.com

    · Neroseagate@gmail.com

    这两个账户里面都有 联系人“GG”,导出的数据如下

    clip_image002

    clip_image004

    注意头两列,第一列将会和下面的表关联,第二列关联Account

    clip_image006

    第一个 [酷派客服热线]是手机自带的。

    中间两条是同步下来的。

    最后一个是从手机上添加的。

    这个表的作用 就是存储原生数据以及同步的配置项。

    clip_image008

    2.Data 表

    详细的数据存放在data中,用主键关联raw_Data。

    注意 raw_contact_id 是用来关联上一个表的, mimeType_id 是指不同的数据类型,data1-data15是用来存储数据的

    _id

    package_id

    mimetype_id

    raw_contact_id

    is_read_only

    is_primary

    is_super_primary

    data_version

    data1

    data2

    data3

    data4

    data5

    data6

    data7

    data8

    data9

    data10

    data11

    data12

    data13

    data14

    data15

    data_sync1

    23

     

    7

    5

    0

    0

    0

    0

                                 

    https://www.google.com/m8/feeds/photos/media/neroseagate3%40gmail.com/1a6e03a18abfdb19

    24

     

    6

    5

    0

    0

    0

    1

    GG

    GG

                 

    1

    3

             

    25

     

    11

    5

    0

    0

    0

    1

                                   

    26

     

    10

    5

    0

    0

    0

    1

                                   

    27

     

    15

    5

    0

    0

    0

    1

                 

    4

    5

                 

    29

     

    8

    5

    0

    0

    0

    1

    5

                                 

    30

     

    5

    5

    0

    0

    0

    1

    13372576188

    2

     

    8.6134E+12

                           

    31

     

    16

    5

    0

    0

    0

    1

    www.cnblogs.com

    3

                               

    32

     

    17

    5

    0

    0

    0

    0

    1972/12/18

    3

                               

    33

     

    2

    5

    0

    1

    0

    1

    home@1.com

    1

                               

    34

     

    8

    5

    0

    0

    0

    0

    6

                                 

    35

     

    4

    5

    0

    0

    0

    0

    江西,中囿

    1

             

    江西_

     

    中国

               

    MimeType 的值如下:

    _id

    mimetype

    1

    vnd.android.cursor.item/cpother

    2

    vnd.android.cursor.item/email_v2

    3

    vnd.android.cursor.item/im

    4

    vnd.android.cursor.item/postal-address_v2

    5

    vnd.android.cursor.item/phone_v2

    6

    vnd.android.cursor.item/name

    7

    vnd.android.cursor.item/photo

    8

    vnd.android.cursor.item/group_membership

    9

    vnd.android.cursor.item/organization

    10

    vnd.android.cursor.item/nickname

    11

    vnd.android.cursor.item/note

    12

    vnd.android.cursor.item/sns

    13

    vnd.android.cursor.item/sip_address

    14

    vnd.android.cursor.item/identity

    15

    vnd.com.google.cursor.item/contact_misc

    16

    vnd.android.cursor.item/website

    17

    vnd.android.cursor.item/contact_event

    另外data1-data15 有不同的用途

    名字:

    Uri: Uri.parse("content://com.android.contacts/data")

    PREFIX = "data4"; //名称前缀
    MID_NAME = "data5";//中间名
    GIVEN_NAME = "data2";//名字
    FAMILY_NAME = "data3";//姓氏
    MID_PINYIN="data8"; //中间名拼音
    String FAMILY_NAME_PINYIN="data9"; //姓氏拼音
    String SUFIX = "data6"; //名称后缀
    String SUFIX_PINYIN="data7"; //名字拼音

    电话:

    Uri: Uri.parse("content://com.android.contacts/data/phones"

    phone: "data1";//号码

    Type: "data2";//这个字段是整形值,指示电话类型

    类型对应关系如下:

    TYPE_CUSTOM = 0;
    TYPE_HOME = 1;
    TYPE_MOBILE = 2;
    TYPE_WORK = 3;
    TYPE_FAX_WORK = 4;
    TYPE_FAX_HOME = 5;
    TYPE_PAGER = 6;
    TYPE_OTHER = 7;

    Email

    Uri:Uri.parse("content://com.android.contacts/data/emails")

    Email: "data1";//邮箱地址

    Type: "data2";//这个字段是整形值,指示Email类型

    类型对应关系如下:

    TYPE_CUSTOM = 0;
    TYPE_HOME = 1;
    TYPE_WORK = 2;
    TYPE_OTHER = 3;
    TYPE_MOBILE = 4;

    地址:

    Uri:Uri.parse("content://com.android.contacts/data/postals")

    STREET="data4";//街道
    CITY="data8";//城市
    STATE="data7";//州
    ZIP_CODE="data9";//邮政编码

    Type:"data2";//type的类型如下

    TYPE_CUSTOM = 0;
    TYPE_HOME = 1;
    TYPE_WORK = 2;
    TYPE_OTHER = 3;

    clip_image010

    3.表Contacts

    这张表,按照google的意思,合并raw_contacts里面的同名联系人,如下图所示,

    clip_image012

    可是,我看到的并不是这样子, 对比第一个表,貌似没有合并,只是一个简单的汇总信息表。

    _id

    name_raw_contact_id

    default_tel

    single_is_secret

    photo_index

    send_to_voicemail_vt

    send_to_voicemail_sip

    indicate_phone_or_sim_contact

    index_in_sim

    filter

    is_sdn_contact

    1

    1

    76923075280

    0

    5

    0

    0

    -1

    -1

    0

    0

    3

    5

    13372576188

    0

    4

    0

    0

    -1

    -1

    0

    0

    6

    6

    15906879563

    0

    7

    0

    0

    -1

    -1

    0

    0

    7

    7

    133

    0

    6

    0

    0

    -1

    -1

    0

    0

    参考资料

    http://developer.android.com/guide/topics/providers/contacts-provider.html

    http://blog.csdn.net/xys289187120/article/details/6730957

    http://www.cnblogs.com/lw900320/archive/2013/01/10/2855145.html

    附件( http://files.cnblogs.com/xiaokang088/db.zip)是 从手机里面提取出来的数据库和 转化的excel。

  • 相关阅读:
    Android二维码扫描功能的集成开发
    【IMOOC学习笔记】多种多样的App主界面Tab实现方法(四)
    【IMOOC学习笔记】多种多样的App主界面Tab实现方法(三)
    【IMOOC学习笔记】多种多样的App主界面Tab实现方法(二)
    【IMOOC学习笔记】多种多样的App主界面Tab实现方法(一)
    【第一行代码笔记】(一)
    Android viewpager切换到最后一页时,跳转至其他activity
    scrapy爬取天气数据
    nodejs压缩
    Express文件上传
  • 原文地址:https://www.cnblogs.com/xiaokang088/p/3559809.html
Copyright © 2020-2023  润新知