1.先说说原理,大家知道,android可以对数据库进行监控,但是个人感觉这个监控不给力,无论怎么实现监控,最后返回的结果是数据库是否改变,没有告诉我们数据库的那条数据进行了改变或者是删除,添加,并不能解决大多数需求。
当初我遇到这样的问题我也很痛苦,无论怎么早资料都没找到自己想要的,而网上大多数资料只是告诉你怎么监控数据库,但没有告诉你怎么获取具体的数据改变。
往往成功是逆境里逼出来的,我去查找英文API,发现ContactsContract.RawContacts类中VERSION字段(ContactsContract.Contacts.Entity.VERSION)的说明,原文如下:
Version number that is updated whenever this row or its related data changes. This field can be used for optimistic locking of a raw contact.
中文大概意思就是,只要是联系人相关属性只要进行修改了都会自加。
有了这个说明,我自己对android虚拟机上的联系人进行测试,然后把sqlit数据库导出进行查看,发现VERSION确实发生了改变。有了这个依据,便能很好的解决监听联系人数据变化了。
我的设计思路是这样,当用户第一次启动程序,程序就遍历RawContacts,将所有_id和VERSION组合成字符串,然后用SharedPreferences存入。
这样再监听数据库,当数据库有改变时,数据进行对比,就知道哪些数据进行了修改,如果SharedPreferences数据不存在说明有增加,如果SharedPreferences数据大于原有数据库的数据说明有增加。

2.ContactsContract.Contacts.CONTACT_STATUS_TIMESTAMP,需要api>=19

官方的api的demo,详细位置:android-sdk\samples\android-15\ApiDemos\src\com\example\android\apis\content\Provider\Changed Contacts

3.getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, mObserver);

android 监控联系人变化相关推荐

  1. Android contacts 联系人 通讯录 源码 完全解析

    Android contacts 联系人 通讯录 源码 完全解析 1简介 2软件架构 3各功能模块分析 1联系人数据的显示 1联系人列表显示 2联系人详细信息数据的显示 2联系人数据的编辑和存储 1编 ...

  2. Android 之联系人提供程序

    介绍 联系人提供程序是一个强大而又灵活的 Android 组件,用于管理设备上有关联系人数据的中央存储库. 联系人提供程序是您在设备的联系人应用中看到的数据源,您也可以在自己的应用中访问其数据,并可在 ...

  3. delphi 监控文件变化_监控Linux文件变化,防止系统被黑

    运维服务器比较头疼的一个问题是系统被黑,沦为肉鸡或者矿机.除了加强安全基线配置,加强网络和端口加固,系统和应用bug修复,上IDS/IPS(入侵检测/防御系统)之外,另一个方面就是系统监控,一个完善准 ...

  4. Python监控文件变化:watchdog

    Python监控文件变化有两种库:pyinotify和watchdog.pyinotify依赖于Linux平台的inotify,后者则对不同平台的的事件都进行了封装.也就是说,watchdog跨平台. ...

  5. Android系统联系人全特效实现(下),字母表快速滚动

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9050671 在上一篇文章中,我和大家一起实现了类似于Android系统联系人的分组 ...

  6. Android系统联系人全特效实现(上),分组导航和挤压动画

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9033553 记得在我刚接触Android的时候对系统联系人中的特效很感兴趣,它会根 ...

  7. oracle 表变化监控,oracle 怎么 监控数据变化

    当前位置:我的异常网» Oracle技术 » oracle 怎么 监控数据变化 oracle 怎么 监控数据变化 www.myexceptions.net  网友分享于:2013-03-06  浏览: ...

  8. Android读取联系人的姓名及电话号码

    Android中联系人的信息是通过ContentProvider来供外部应用获取的,我们使用时只需根据系统联系人ContentProvider的Uri即可获取所需数据.下面讲解如何获取联系人的姓名及电 ...

  9. Android VCard联系人备份恢复(导入/导出)详解

    原文地址为: Android VCard联系人备份恢复(导入/导出)详解 首先我们简单的看下在Android中联系人的存储结构. 工作环境:android 2.3.3 联系人的主要数据存放在raw_c ...

最新文章

  1. TensorFlow入门(一)基本用法
  2. ls 命令还能这么玩?看一下这 20 个实用范例
  3. UITableView移除某一行cell的分割线
  4. android切环境插件,Android Studio下Flutter环境搭建图文教程
  5. 服务器自动挂载硬盘,Linux硬盘分区及开机自动挂载
  6. Nginx @ Https
  7. python爬淘宝评论源代码_python3爬取淘宝信息代码分析
  8. idea 搭建flutter 安卓开发环境(因为有idea就不需安装Android Studio)
  9. Golang(3)CentOS7系统安装Go语言
  10. KTV房间一直显示连接服务器失败,KTV点歌服务器死机、卡歌、蓝屏的解决办法
  11. 让Mac文本编辑器成为HTML编辑器
  12. [转] 心态是最大的本钱;人无完人,重要的是怎么做人
  13. QPainter绘制自定义大小的图片
  14. 【小5聊】小程序之体验版本wx.chooseImage选择图片上传可以,而线上正式版本选择图片一闪而过的原因
  15. 潘建伟:量子技术实现“绝对安全”通信
  16. pipeline的相关解释(instruction pipeline)
  17. 打开网站被挂马跳转到博彩页面 解决办法
  18. A1490. osu!(乔明达)
  19. 【玩转yolov5】请看代码之参数管理及学习率调整
  20. 图像光照校正处理(白平衡)及其速度优化 -opencv+python

热门文章

  1. ec20 复位命令_EC20模块AT命令讲解
  2. VS 链接问题 warning C4273: dll 链接不一致
  3. css字体导入和应用
  4. Sprigboot整合mybatis连接数据库(详细)
  5. 房产中介小程序定制开发功能方案
  6. 史上AI最高分!谷歌大模型创美国医师执照试题新纪录,科学常识水平媲美人类医生...
  7. java objectpool_java objectpool 对象池
  8. mysql select from user_select user,host from mysql.user; 这条查询语句到达mysql 从开始到结束到底经历了什么...
  9. 代理模式之详谈动态代理模式(Spring的AOP实现)
  10. 电子信息工程求职目标_20届,上海科技大学电子信息工程专业,大三的他如何拿下复星集团的产品offer?未来目标是大厂!...