Android 监听ContentProvider中数据的变化

如果 ContentProvider 的访问者需要知道 ContentProvider 中的数据发生了变化,可以在 ContentProvider 发生数据 变化时调用 getContentResolver().notifyChange(uri, null) 来通知注册在此 URI 上的访问者,例子如下: public class PersonContentProvider extends ContentProvider { public Uri insert(Uri uri, ContentValues values) { db.insert("person", "personid", values); getContext().getContentResolver().notifyChange(uri, null); } } 如果 ContentProvider 的访问者需要得到数据变化通知,必须使用 ContentObserver 对数据(数据采用 uri 描述)进 行监听,当监听到数据变化通知时,系统就会调用 ContentObserver onChange() 方法: getContentResolver().registerContentObserver (Uri.parse("content://cn.itcast.providers.personprovider/person"), true, new PersonObserver(new Handler())); public class PersonObserver extends ContentObserver{ public PersonObserver(Handler handler) { super(handler); } public void onChange(boolean selfChange) { // 此处可以进行相应的业务处理 } }

用户使用系统自带的短信程序发送短信,程序会把短信通过 ContentProvider 保存进数据库,并且发出一个数据变 化通知,只要使用 ContentObserver 对数据变化进行监听,在用户发送短信时,就会被 ContentObserver 窃听 到: 注册监听: getContentResolver().registerContentObserver( Uri.parse("content://sms") , true, new SmsObserver(new Handler())); 监听类: private final class SmsObserver extends ContentObserver{ public SmsObserver(Handler handler) { super(handler); } 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("_id=").append(cursor.getInt(cursor.getColumnIndex("_id"))); sb.append(",address=").append(cursor.getString(cursor.getColumnIndex("address"))); sb.append(";body=").append(cursor.getString(cursor.getColumnIndex("body"))); sb.append(";time=").append(cursor.getLong(cursor.getColumnIndex("date"))); Log.i("ReceiveSendSMS", sb.toString()); } }



转: http://blog.csdn.net/hosterzhu/article/details/6151965

更多相关文章

  1. Android提交数据到服务的四种方法!!!
  2. 【android】Cursor记录集游标、ListView和SimpleCursorAdapter、
  3. 【Android开发学习07】存储简单数据的利器--Preferences
  4. android 数据库建立以及自定义ContentProvider
  5. android 客户端与服务端的通信 发送get和post请求并获取数据
  6. Android SQLite 数据库 增删改查操作
  7. android 存储数据与文件
  8. Android 短信模块分析(二) MMS中四大组件核心功能详解
  9. Android读取JSON格式数据

随机推荐

  1. Android(安卓)onTouchEvent, onClick及on
  2. Android中的资源与国际化!
  3. Android(安卓)VCard通讯录导入导出详解
  4. [置顶] Android之高仿手机QQ聊天
  5. 网络界面Android(安卓)网络连接--Wifi/3G
  6. Android中Intent的显示和隐式使用
  7. Android之WebView优化之路
  8. Android自定义控件一简介
  9. 《第一行代码》学习笔记一
  10. android软键盘的用法总结