zoukankan      html  css  js  c++  java
  • android开发系列日志(4)

    一.ContentProvider
        1.什么是ContentProvider
            ContentProvider是Android四大组件之一, 用来将程序内的数据共享给其他程序.
            在共享数据的时候, 将操作数据的代码封装成方法, 不直接把数据暴露出来, 提高安全性.
            可以对ContentProvider注册ContentObserver, 实时监听数据修改.
        2.怎么创建和访问ContentProvider *****
            定义类继承ContentProvider, 在清单文件<application>节点中注册<provider>节点
            将程序安装到手机上之后, 其他应用就可以访问了
            访问时获取到ContentResolver对象, 指定Uri, 调用增删改查方法
        3.ContentProvider中注意的细节 ***
            在ContentProvider中可以通过Uri识别表名, 可以识别ID
            使用UriMatcher类可以识别一个路径, 调用addUri()方法添加路径, 然后使用match()方法匹配一个Uri可以得到预先设置的结果码
            Uri中带着的ID可以用ContentUris类的parseId()方法得到
            在插入方法执行结束后, 需要返回一个带ID的Uri, 也可以使用ContentUris类的withAppendedId()方法完成
        4.使用ContentObserver观察ContentProvider的数据改变 *****
            使用ContentResolver的registerContentObserver()方法可以在指定Uri上注册一个ContentObserver
            ContentObserver的onChange()方法在ontentProvider调用ContentResolver.notifyChange()方法时, 自动执行
           
    二.监听短信
        1.使用GIT下载源代码
            查看清单得到authorities, 查看java代码了解子级路径
        2.添加观察者
            给系统中短信数据的内容提供者注册观察者, 在数据改变的时候, 查询最后一条记录
            获取其中address, type, date, body四个字段

    三.操作联系人
        1.下载代码 *
            和短信代码相同, 使用GIT下载, 找到authorities和子级路径
        2.读联系人 ***
            先读raw_contacts表得到所有的id
            用id作为查询条件, 查询data表. mimetype是数据类型, data1是数据
        3.写联系人
            先向raw_contacts表写入一个自动生成的id
            再用id作为data表中raw_contact_id列的值, 插入数据
            多个插入操作应该是一组操作, 要么都成功, 要么都失败
            可以使用ContentResolver类的applyBatch()方法实现

    如果,这篇博客帮您解决了问题,不妨点击一下右下角的【推荐】。

    如果,您希望更容易地发现我的新博客,不妨点击一下【加关注】。

    因为,我的热情需要您的肯定和支持! 

    感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends!




  • 相关阅读:
    第四周作业
    第四周上机练习
    第一次作业
    第八周作业
    第八周上机练习
    第七周作业
    第五次上机练习
    第六周作业
    第四次上机练习
    第三次上机练习
  • 原文地址:https://www.cnblogs.com/yejiurui/p/2760380.html
Copyright © 2011-2022 走看看