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