android103 内容观察者】的更多相关文章

#内容观察者 * 通过内容提供者可以访问到数据库,当数据库数据改变时,内容提供者会发出通知,在内容提供者的uri上注册一个内容观察者,就可以收到数据改变的通知,类似于广播接受者,但是他不是广播. cr.registerContentObserver(Uri.parse("content://sms"), true, new MyObserver(new Handler())); class MyObserver extends ContentObserver{ public MyObs…
<Android 内容观察者的原理>中介绍了内容观察者的一些基本原理,并做了简单的实战,本文接着进一步做一个小项目实战 package com.wuyudong.smslistener; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.net.Uri; import andr…
拦截短信,比如当发短信的时候,就把短信读取出来,当系统的短信发生变化的时候,大叫一声,把数据发送到公共的消息邮箱里面,我们的应用通过内容观察者观察公共的消息邮箱 获取ContentResolver对象,调用函数getContentResolver(), 调用ContentResolver对象的registerContentObserver(uri,notifyForDescendents,observer)方法,参数:Uri对象,是否精确uri(true不精确,false精确),observer…
内容观察者是做什么的? 内容观察者主要用来观察数据库是否被操作了. 以查询数据库为例: 首先注册一个内容观察者(App1): //false 观察的Uri必须是一个确切的Uri 如果是true,只需要匹配一个主机名,后面所有的操作都生效 getContentResolver().registerContentObserver(uri,true,new MyContentObserver(new Handler())); private class MyContentObserver extend…
1.内容观察者ContentObserver 如果ContentProvider的访问者需要知道ContentProvider中的数据发生了变化,可以在ContentProvider 发生数据变化时调用getContentResolver().notifyChange(uri, null)来通知注册在此URI上的访问者,例子如下: private static final Uri URI = Uri.parse("content://person.db"); public class…
内容观察者: 当关注应用的数据库数据改变时,内容提供者会发出通知,在内容提供者的uri上注册一个内容观察者,就可以收到数据改变的通知 实现步骤: 1.假如是自定义的ContentProvider,需要在数据发送改变的方法中实现以下代码: ContentResolver cr = getContext().getContentResolver(); //发出通知,所有注册在这个uri上的内容观察者都可以收到通知 cr.notifyChange(uri, null); notifyChange(Ur…
//内容观察者(如果系统的短信发生了变化,比如刚获取一条短信,那么将触发onChange方法) ContentResolver contentResolver = getContentResolver(); Uri uri = Uri.parse("content://sms/"); contentResolver.registerContentObserver(uri, true, new ContentObserver(new Handler()) { @Override publ…
下面通过3个应用程序之间的交互说明一下内容观察者: 一. 如下3个应用程序为相互交互的: 二.交互逻辑图: 三.具体代码: 1.   16_数据库工程: (1)数据库帮助类BankDBOpenHelper(继承自SQLiteOpenHelper): package com.itheima.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.databas…
1. 内容观察者 不属于四大组件,只是内容提供者ContentProvider对应的小功能. 如果发现数据库内容变化了,就会立刻观察到. 下面是逻辑图:       当A应用中银行内部的数据发生变化的时候,A应用会发送数据到一片公共内存,内存观察者会读取这个公共内存中的数据.从而知道A应用的数据库发生变化.       这个机制和广播接收者原理差不多,但是对于广播接收者,注册广播接受者的所以应用都会接收到广播,这样效率不好,所以google封装出来了一个API应用为:内容观察者.…
Activity public class MainActivity extends ListActivity {     private TextView tv_info;     private SMSContentObserver smsContentObserver;     private CallLogObserver callLogObserver;     private PhoneStateReceiver myReceiver;     @SuppressLint("Hand…