一、项目目录结构
上图中的前两个项目已在android内容提供者contentProvider实现了,本例只是借助一下,其中第一个项目AccountProvider.java类中下面代码为本例发送消息。
getContext().getContentResolver().notifyChange(uri, null);
二、MainActivity.java代码
package com.zgs.registerContentObserver;
import android.app.Activity;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//[1]注册内容观察者
Uri uri = Uri.parse("content://com.zgs.provider/");
//false 观察的uri 必须是一个确切的uri 如果是true
getContentResolver().registerContentObserver(uri, true, new MyContentObserver(new Handler()));
}
//定义内容观察者
private class MyContentObserver extends ContentObserver{
public MyContentObserver(Handler handler) {
super(handler);
}
//当我们观察的uri发生改变的时候调用
@Override
public void onChange(boolean selfChange) {
System.out.println("哈哈 数据库被操作了 ");
super.onChange(selfChange);
}
}
}
三、效果显示