• 内容提供者总结


    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,所以无法在手机上的联系人列表中显示
  • 相关阅读:
    关于Animator状态在运行时的正负方向播放
    测试-Animator的“当前剪辑CurrentAnimatorStateInfo”
    关于Unity实现游戏录制功能的思考
    关于UI功能解锁,UI特效动画,UI tips的再思考
    堆排序
    单元测试时使用Ninject的小问题
    又开一坑,运动图形MoGraph for Unity
    关于AnimationState的测试
    底层设计应该尽量避免泛型
    java8中计算两个日期时间LocalDateTime的时间差,格式化成xx年yy月zz日aa时bb分cc秒
  • 原文地址:https://www.cnblogs.com/tyzl/p/5434765.html
Copyright © 2020-2023  润新知