Android,监控ContentProvider的数据改变

有时候应用中需要监听ContentProvider的改变并提供响应,这时候就要利用ContentObserver类了

不管是ContentProvider中实现的,insert,delete,update方法中的任何一个,程序都会调用getContext().getContentResolver().notifyChange(uri,null);

这行代码可用于通知所有注册在该Uri上的监听者,该ContentProvider所共享的数据发生了改变 

监 听ContentProvider数据改变的监听器需要继承ContentObserver类,并重写该基类所定义的onChange(boolean selfChange)方法,当它所监听的ContentProvider所共享的数据发生改变时,该onChange将会触发

为了监听指定的ContentProvider的数据变化,需要通过ContentResolver向指定Uri注册ContentObserver监听器.

用如下方法来注册监听器

registerContentObserver(Uri uri,boolean notifyForDescendents,ContentObserver observer)

notifyForDescendents :如果该参数设为true,假如Uri为content://abc,那么Uri为content://abc/xyz, content://abc/xyz/foo的数据改变时也会触发该监听器,如果参数为false,那么只有 content://abc的数据改变时会触发该监听器

下面以监听系统的短信为例,下图为模拟发送一条短信

上面有一条短信内容为hello,下面启动监听程序在logcat中打印该短信的相关信息

下面为代码

    package WangLi.IO.MonitorSms;  import android.app.Activity;  import android.database.ContentObserver;  import android.database.Cursor;  import android.net.Uri;  import android.os.Bundle;  import android.os.Handler;  public class MonitorSms extends Activity {  /** Called when the activity is first created. */  @Override  public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  //为content://sms的数据改变注册监听器  this.getContentResolver().registerContentObserver(Uri.parse("content://sms"), true,   new SmsObserver(new Handler()));  }  //根据自定义的ContentObserver监听类  private final class SmsObserver extends ContentObserver  {  public SmsObserver(Handler handler) {  super(handler);  // TODO Auto-generated constructor stub  
            }  public void onChange(boolean selfChange)  {  //查询发送箱中的短信(处于正在发送状态的短信放在发送箱)  Cursor cursor = getContentResolver().query(Uri.parse("content://sms/outbox"),   null, null, null, null);  //遍历查询得到结果集,即可获取用户正在发送的短信  while(cursor.moveToNext())  {  StringBuilder sb = new StringBuilder();  //获取短信的发送地址  sb.append("address=").append(  cursor.getString(cursor.getColumnIndex("address")));  //获取短信标题  sb.append(";subject=").append(  cursor.getString(cursor.getColumnIndex("body")));  //获取短信发送时间  sb.append(";time=").append(  cursor.getLong(cursor.getColumnIndex("date")));  System.out.println("Has Sent SMS:::" + sb.toString());  }  }  }  }  

 

转载于:https://www.cnblogs.com/zhujiabin/p/4601737.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

插件开发-UI插件开发

1.新建类库解决方案,引入命名空间,同时引入要添加UI Form的WebPart(在Portal\UILib目录下)2.继续UFSoft.UBF.UI.Custom.ExtendedPartBase,重写AfterInit()方法,代码如下,便于添加下拉列表按钮,在原单据中UI先新增一下拉…

为博客园选择一个小巧霸气的语法高亮插件

博客园的语法高亮简直蛋疼,于是乎就打算找一个靠谱的插件来改造下。各种百度谷歌,大致得到几个推荐:SyntaxHighlighter,Snippet,Google Code Pretiffy,Highlight,SHJS。其实 SyntaxHighlighter …

PS图片删除需要计算机管理权限,如何使用PsTools工具执行本地/远程PC管理任务

大多数刚入门的管理员都习惯使用 RDP 或其它类似的工具连接到远程 Windows 中进行图形化管理。而 PowerShell 及 PsTools 等工具可以帮助我们在命令行中执行相当多的管理任务,更主要的是可以将其写成脚本来执行周期性重复任务或在管理大批量服务器时提高效率。在企业…

Python实验:关灯游戏

文章目录 前言一、设计表二、关键代码三、运行结果小地图,容易难度:中地图,中等难度:大地图,困难难度: 四、完整代码链接总结 前言 这是一个Python实验作业,内容如下: 题目要求&am…

python计算圆的面积

用Python创建一个脚本,要求: 能计算半径为2的圆的面积保留10位小数可以直接执行 #!/usr/bin/env python3 import math print("Area is:{:.10f}".format(math.pi*4))计算圆的面积要用到pi,所以我们引用模块math

昆明学院计算机专业在哪个校区,昆明学院有几个校区及校区地址

昆明学院有几个校区及校区地址2017-06-19 11:15:56文/韩竞仪最近有很多考生和家长咨询小编,昆明学院有几个校区,今年新生会被分配到哪个校区?哪个校区好?等相关问题,下面小编统一回复一下考生们的问题。昆明学院有3个校区,分别是…

Solution 19: Fibonacci数列

问题描述 求Fibonacci数列的第n项。Fibonacci数列为1,1,2,3,5,... 解决思路 (1) 递归,指数级时间复杂度; (2) 循环,O(n)时间复杂度; (3) 矩阵乘法,O(logn)时间复杂度; (4) 公式法,O(1)时间复杂度…

ASP.NET MVC 学习第一天

今天开始第一天学习asp.net mvc,写的不是很好,高手不要喷,希望大家能一起进步学习。 好了,开始学习 新建项目,选择mvc 4应用程序 接下来选择基本,视图引擎当然要选择Razor,如果在选择aspx那我们…

计算机显示发送报告,Word文档打不开提示发送错误报告的解决方法

经常使用word文档的人员都会碰到过这种发送错误报告情况,既然有这个问题就要查个究竟什么原因造成,才能完美解决,那么今天小编就在这里讲解word文档发送错误报告的方法。根本原因是:打开word出现提示word发送错误报告的故障其主要…

图灵计算机模型意义,图灵机有什么意义_学习图灵机模型中遇到的问题

图灵机意义图灵提出图灵机的模型并不是为了同时给出计算机的设计,它的意义我认为有如下几点:1、它证明了通用计算理论,肯定了计算机实现的可能性,同时它给出了计算机应有的主要架构;2、图灵机模型引入了读写与算法与程…

使用MVVM-Sidekick开发Universal App(一)

终于要迈进Universal的大坑了,还有点小激动呢。 CurrencyExchanger 掌中汇率是我前几年发布在Windows Phone商店中的一个应用,当时是WP7版本,下载链接:http://www.windowsphone.com/zh-cn/store/app/%E6%8E%8C%E4%B8%AD%E6%B1%87%…

如何检测本计算机耗电量,如何查看电脑耗电量?鲁大师查看电脑使用功率的方法...

【www.xinr41319.cn--电脑网络】查看自己电脑的电源功率有两大好处,第一知道给台式电脑配置多大的电源,第二可以精确的算出,一台电脑,一天一般消耗多少电,那么小编教大家来查看一下自己电脑的功率是多少。我们可以要借…

【转载】COM小结

原文:http://blog.csdn.net/byxdaz/article/details/6595210 一、Com概念 所谓COM(Componet Object Model,组件对象模型),是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作&#xff0…

解决Dropbox无法连接的问题

同步共享服务Dropbox从6月18日开始再次遭到封锁,原因是DNS污染。Dropbox上次在2010年5月曾遭到IP封锁和网址关键字过 滤,2012年5月除文件外链功能外其它功能可正常访问;2014年2月全部功能都可以正常访问。中国正展开净网行动,文件…

RDLC报表系列一

1、报表项目搭建: 配置好后,单击Web服务URL:http://lg-20151517ryre/ReportServer 如果电脑系统打开的时候没有设置密码的话,此时打开有可能会出现需要登录名和密码。如出现此种情况可给Administrator设置密码。然后刷新当前页面就可以看大上…

ADS-B显示终端5.9

更改日志 1 更新背景地图。增加了全国范围内的VOR电台、DME、NDB导航台信息,包含有坐标信息、代码信息、频率等内容。 VOR电台、DME、NDB导航台信息来自中国民航局公布的航行情况资料汇编。VOR、DME、NDB分别採用不同的图形绘制,目标均採用淡绿色画笔…

域名自动跳转不搭建服务器,宝塔搭建的服务器WEB系统环境如果做域名301跳转

宝塔搭建的服务器WEB系统环境如果做域名301跳转今天老蒋遇到一个网友,服务器WEB系统环境是用宝塔搭建的,搭建的网站绑定过WWW域名和不带WWW域名,他是希望能全部统一到WWW的域名,这里应该是他程序没有自带301跳转,如果是…

OpenCV Python教程(1、图像的载入、显示和保存)

本文是OpenCV 2 Computer Vision Application Programming Cookbook读书笔记的第一篇。在笔记中将以Python语言改写每章的代码。 PythonOpenCV的配置这里就不介绍了。 注意,现在OpenCV for Python就是通过NumPy进行绑定的。所以在使用时必须掌握一些NumPy的相关知识…

大华出入口管理系统H710服务器配置,DH-DSS-H710S2 大华出入口综合管理系统 停车场收费 支持人脸相机设备添加...

DH-DSS-H710S2 大华出入口综合管理系统 支持车辆列表展示,包括车辆编号、车牌、车场、车辆品牌、车辆类型、车身颜色、车主等信息 支持通过人员编号、姓名进行人员信息查询 支持打印小票与导出缴费信息 DH-DSS-H710S2DH-DSS-H710S2大华出入口综合管理系统DH-DSS-H71…

微软块级备份引擎服务器,文件级与块级备份区别

首先我们先来了解一下,什么叫做块级?什么叫文件级?1.块级概念:块级是指以扇区为基础,一个或我连续的扇区组成一个块,也叫物理块。它是在文件系统与块设备(例如:磁盘驱动器)之间。2.文件级概念&a…