码迷,mamicode.com
首页 > 其他好文 > 详细

内容提供者总结

时间:2016-04-26 13:57:38      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

1、创建内容提供者的时候用到ContentProvider

      使用内容提供者的时候用到ContentResolver
2、UriMatcher——用于判断一条uri跟指定的多条uri中的哪条匹配【需要添加匹配规则】
    匹配规则中路径后面还可以携带以下符号【通常作为查询的where条件使用】:
      *  代表任何的文本
      #  代表任何数字
3、为什么使用ContentProvider而不直接把数据库改成公开的?
    因为使用ContentProvider可以自己定义访问规则,选择私有数据哪些共享,哪些不共享,加强数据的安全性,ContentProvider不仅仅只共享数据库,文本等也可以共享,但是我们用的最多的还是共享数据库
4、获取系统短信
    查询sms表:address - date - type - body
    路径和表名可以不同,路径不同不代表查的表就不同,路径不同代表的是不同的查询条件
    inbox  --> 查到的是收件箱的消息
5、插入短信
    <1> type    1 —— 代表写,2 —— 代表读
    <2> 插入时读写权限都需要,因为我们不知道 内容提供者中的 insert 的具体实现 
6、getType —— 返回通过指定uri获取的数据的mimetype,mimetype 公司自己定义,自己使用
    vnd.android.cursor.dir/  -->  表示返回多条数据
    vnd.android.cursor.item/ --> 表示返回单条数据
7、获取系统联系人
    (1) 要查询的表及字段
    raw_contacts表
        contact_id:联系人id
    data表:保存联系人的详细信息,一条信息是一行
        data1:联系人信息的具体内容
        raw_contact_id:联系人id,标识该行信息属于哪个联系人
        mimetype_id:标识该行信息属于什么类型
    mimetypes表:mimetype_id对应的mime类型
    (2) 查询data表示是复合查询,查询的不只是data表,直接查询mimetypes表中的mimetype,而不查询mimetype_id,因为mimetype_id就是指向mimetypes表中的mimetype,因此data中只查询data1mimetype字段就可以了
    (3) 实现步骤:
        <1> 先拿到raw_contacts表中的contact_id
        <2> 拿着联系人id去data表查询属于该联系人的信息
    (4) 封装数据
        将数据封装为一个java类,类中设置get/set方法
    (5) 手机联系人就算删除,在手机中也不会完全删除,只是联系人id为null,所以无法在手机上的联系人列表中显示

内容提供者总结

标签:

原文地址:http://www.cnblogs.com/tyzl/p/5434765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!