背景介绍
闲了几个月, 总算有点正经活干干了.
新需求就是要把服务器的客户联系方式导入或者同步到本地通讯录中, 在同步过程中如果有与本地相同的号码则取消并提示操作.
所以研究了下android的通讯录. 顺手贴一下所得.
参考资料:
1. http://www.cnblogs.com/liaojie970/p/5744580.html
2. https://www.2cto.com/kf/201412/359013.html
3. http://www.jianshu.com/p/d8a9a2918c61
首先通过资料了解到android通讯录记录联系人分别使用了3个数据表, 即: raw_contacts表, minetypes表, data表
下面分别介绍下这三个表各自的作用.
raw_contacts表
这图我用画图工具拼出来的, 贼长. 想看清楚你得右键使用 “新标签打开图片查看” 但其实看了也没啥卵用, 这个表是用来记录联系人的 ID 的, 用 _id 这个自增主键来记录. 所以我们只需要关注 _id 即可.
minetypes表
大概标注了下我从手机导出的表各字段的含义.
data表
这个表存放着每个联系人最终的数据
注意标红的地方, data 表就是用这两个字段来链接 minetypes 跟 raw_contacts 表的. 分别对应两个表的 _id
这些raw_contact_id 为456的是新建的一个test联系人. 把所有能填的资料都填上, 观察各自对应的字段得知下列信息.
(注意只在魅族手机上, 没有验证其他手机)
vnd.android.cursor.item/organization 代表 单位类型,
data1字段 对应 单位名称, data4字段对应 职务名称
vnd.android.cursor.item/phone_v2 代表 号码类型,
data1字段 对应 号码, data2 字段 对应 相关号码类型 其中各数字代表 { 1. 住宅 2. 手机 3. 公司 4. 传真 7. 其他 0. 自定义 }
vnd.android.cursor.item/email_v2 代表邮箱类型,
data1字段 对应 邮箱 , data2字段 对应 相关邮箱类型 其中各数字代表 { 1. 个人 2. 公司 3. 其他 0. 自定义}