设为首页 加入收藏

TOP

Android操作联系人
2014-11-24 12:16:30 来源: 作者: 【 】 浏览:0
Tags:Android 操作 联系人

获取所有联系人


1. Android系统中的联系人也是通过ContentProvider来对外提供数据的


2. 数据库路径为:/data/data/com.android.providers.contacts/database/contacts2.db


3. 我们需要关注的有3张表


raw_contacts:其中保存了联系人id


data:和raw_contacts是多对一的关系,保存了联系人的各项数据


mimetypes:为数据类型


4. Provider的authorites为com.android.contacts


5. 查询raw_contacts表的路径为:contacts


6. 查询data表的路径为:contacts/#/data


这个路径为连接查询,要查询“mimetype”字段可以根据“mimetype_id”查询到mimetypes表中的数据


7. 先查询raw_contacts得到每个联系人的id,在使用id从data表中查询对应数据,根据mimetype分类数据


示例:


通过电话号码获取联系人


1. 系统内部提供了根据电话号码获取data表数据的功能,路径为:data/phones/filter/*


2. 用电话号码替换“*”部分就可以查到所需数据,获取“display_name”可以获取到联系人显示名


示例:


添加联系人


1. 先向raw_contacts表插入id,路径为:raw_contacts


2. 得到id之后再向data表插入数据,路径为:data


示例:


使用事务添加联系人


1. 在添加联系人得时候是分多次访问Provider,如果在过程中出现异常,会出现数据不完整的情况,这些操作应该放在一次事务中


2. 使用ContentResolver的applyBatch(String authority,ArrayList operations) 方法可以将多个操作在一个事务中执行


3. 文档位置:


file:///F:/android-sdk-windows/docs/reference/android/provider/ContactsContract.RawContacts.html


示例:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android分别使用HTTP协议和TCP协.. 下一篇Android使用Pull解析器解析XML文件

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)