* 只要在这个Uri上面注册了内容观察者,当数据库的表发生变化时,就会发出通知 getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, new ContentObserver(new Handler()) { //Android4.1.2以上使用 @Override public void onChange(boolean selfChange, Uri uri) { super.onChange(selfChange, uri); System.out.println(uri.toString()); } });
观察者类实现: package com.example.jd; import android.app.Activity; import android.database.ContentObserver; import android.net.Uri; import android.os.Bundle; import android.os.Handler; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注册内容观察者 /* * uri :对应数据的一张表 * notifyForDescendents :content://tian.wang.gai.di.hu/bao.ta.zhen.he.yao * true:模糊匹配,只要已这个Uri开头就行 * fale:精确匹配,只能是这个uri * * observer :内容观察者 */ getContentResolver().registerContentObserver(Uri.parse("content://tian.wang.gai.di.hu/bao.ta.zhen.he.yao"), true, new MyObserver(new Handler()) {}); } /** * 内容观察者 */ private class MyObserver extends ContentObserver { public MyObserver(Handler handler) { super(handler); } //当数据的表发生变化的时候回调 @Override public void onChange(boolean selfChange) { super.onChange(selfChange); System.out.println("数据库发生变化了,被我逮到了吧,哈哈哈 :) "); } //在高版本中使用 /*public void onChange(boolean selfChange, Uri uri) { super.onChange(selfChange, uri); }*/ } }