android 监控联系人变化
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 监控联系人变化相关推荐
- Android contacts 联系人 通讯录 源码 完全解析
Android contacts 联系人 通讯录 源码 完全解析 1简介 2软件架构 3各功能模块分析 1联系人数据的显示 1联系人列表显示 2联系人详细信息数据的显示 2联系人数据的编辑和存储 1编 ...
- Android 之联系人提供程序
介绍 联系人提供程序是一个强大而又灵活的 Android 组件,用于管理设备上有关联系人数据的中央存储库. 联系人提供程序是您在设备的联系人应用中看到的数据源,您也可以在自己的应用中访问其数据,并可在 ...
- delphi 监控文件变化_监控Linux文件变化,防止系统被黑
运维服务器比较头疼的一个问题是系统被黑,沦为肉鸡或者矿机.除了加强安全基线配置,加强网络和端口加固,系统和应用bug修复,上IDS/IPS(入侵检测/防御系统)之外,另一个方面就是系统监控,一个完善准 ...
- Python监控文件变化:watchdog
Python监控文件变化有两种库:pyinotify和watchdog.pyinotify依赖于Linux平台的inotify,后者则对不同平台的的事件都进行了封装.也就是说,watchdog跨平台. ...
- Android系统联系人全特效实现(下),字母表快速滚动
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9050671 在上一篇文章中,我和大家一起实现了类似于Android系统联系人的分组 ...
- Android系统联系人全特效实现(上),分组导航和挤压动画
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9033553 记得在我刚接触Android的时候对系统联系人中的特效很感兴趣,它会根 ...
- oracle 表变化监控,oracle 怎么 监控数据变化
当前位置:我的异常网» Oracle技术 » oracle 怎么 监控数据变化 oracle 怎么 监控数据变化 www.myexceptions.net 网友分享于:2013-03-06 浏览: ...
- Android读取联系人的姓名及电话号码
Android中联系人的信息是通过ContentProvider来供外部应用获取的,我们使用时只需根据系统联系人ContentProvider的Uri即可获取所需数据.下面讲解如何获取联系人的姓名及电 ...
- Android VCard联系人备份恢复(导入/导出)详解
原文地址为: Android VCard联系人备份恢复(导入/导出)详解 首先我们简单的看下在Android中联系人的存储结构. 工作环境:android 2.3.3 联系人的主要数据存放在raw_c ...
最新文章
- TensorFlow入门(一)基本用法
- ls 命令还能这么玩?看一下这 20 个实用范例
- UITableView移除某一行cell的分割线
- android切环境插件,Android Studio下Flutter环境搭建图文教程
- 服务器自动挂载硬盘,Linux硬盘分区及开机自动挂载
- Nginx @ Https
- python爬淘宝评论源代码_python3爬取淘宝信息代码分析
- idea 搭建flutter 安卓开发环境(因为有idea就不需安装Android Studio)
- Golang(3)CentOS7系统安装Go语言
- KTV房间一直显示连接服务器失败,KTV点歌服务器死机、卡歌、蓝屏的解决办法
- 让Mac文本编辑器成为HTML编辑器
- [转] 心态是最大的本钱;人无完人,重要的是怎么做人
- QPainter绘制自定义大小的图片
- 【小5聊】小程序之体验版本wx.chooseImage选择图片上传可以,而线上正式版本选择图片一闪而过的原因
- 潘建伟:量子技术实现“绝对安全”通信
- pipeline的相关解释(instruction pipeline)
- 打开网站被挂马跳转到博彩页面 解决办法
- A1490. osu!(乔明达)
- 【玩转yolov5】请看代码之参数管理及学习率调整
- 图像光照校正处理(白平衡)及其速度优化 -opencv+python
热门文章
- ec20 复位命令_EC20模块AT命令讲解
- VS 链接问题 warning C4273: dll 链接不一致
- css字体导入和应用
- Sprigboot整合mybatis连接数据库(详细)
- 房产中介小程序定制开发功能方案
- 史上AI最高分!谷歌大模型创美国医师执照试题新纪录,科学常识水平媲美人类医生...
- java objectpool_java objectpool 对象池
- mysql select from user_select user,host from mysql.user; 这条查询语句到达mysql 从开始到结束到底经历了什么...
- 代理模式之详谈动态代理模式(Spring的AOP实现)
- 电子信息工程求职目标_20届,上海科技大学电子信息工程专业,大三的他如何拿下复星集团的产品offer?未来目标是大厂!...