Android 中的内容观察者ContentObserver
2012-02-16 01:04
344 查看
ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于
数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。
使用ContentObserver 的时候2个重要方法。
(1)注册: public final void registerContentObserver(Uri
uri, boolean notifyForDescendents, ContentObserver observer)。
功能:为指定的Uri注册一个ContentObserver派生类实例,当给定的Uri发生改变时,回调该实例对象去处理。
(2)卸载: public final void unregisterContentObserver(ContentObserver observer)(2)卸载:
功能:取消对给定Uri的观察
下面是一个监听发信箱的Demo
首先是一个监听类:
<uses-permission android:name="android.permission.READ_SMS"/>
数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。
使用ContentObserver 的时候2个重要方法。
(1)注册: public final void registerContentObserver(Uri
uri, boolean notifyForDescendents, ContentObserver observer)。
功能:为指定的Uri注册一个ContentObserver派生类实例,当给定的Uri发生改变时,回调该实例对象去处理。
(2)卸载: public final void unregisterContentObserver(ContentObserver observer)(2)卸载:
功能:取消对给定Uri的观察
下面是一个监听发信箱的Demo
首先是一个监听类:
package com.bsn.test; import java.net.URI; import java.net.URL; import android.app.Activity; import android.content.ContentProvider; import android.content.Context; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.os.Handler; public class SMSContentObserver extends ContentObserver { private Context mContext; private Handler mhandler; public SMSContentObserver(Context context,Handler handler) { super(handler); mContext=context; mhandler=handler; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Uri outMMS=Uri.parse("content://sms/sent"); Cursor c=mContext.getContentResolver().query(outMMS, null,null, null, "date desc"); if (c!=null) { System.out.println("the number is----"+c.getCount()); StringBuilder sb=new StringBuilder(); while (c.moveToNext()) { sb.append("发件人手机号"+c.getInt(c.getColumnIndex("address"))); sb.append("信息内容"+c.getString(c.getColumnIndex("body"))); } c.close(); mhandler.obtainMessage(2,sb.toString()).sendToTarget(); } } }(2)注册监听类的acitivity
package com.bsn.test; import android.app.Activity; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; public class ObserverActivity extends Activity{ private SMSContentObserver observer; private TextView numView; private TextView contentView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.dotsaygan); observer=new SMSContentObserver(this, mHandler); numView=(TextView) findViewById(R.id.tv); contentView=(TextView) findViewById(R.id.tv1); registerContentObservers(); } private void registerContentObservers() { Uri uri=Uri.parse("content://sms"); getContentResolver().registerContentObserver(uri, true, observer); } private Handler mHandler=new Handler(){ public void handleMessage(android.os.Message msg) { switch (msg.what) { case 2: String outbox=(String)msg.obj; contentView.setText(outbox); break; default: break; } } }; }最后别忘记了加入 读取消息的权限
<uses-permission android:name="android.permission.READ_SMS"/>
相关文章推荐
- Android内容观察者--ContentObserver
- android内容提供者ContentProvider,UriMatcher和内容观察者ContentObserver常见使用
- android ContentObserver内容观察者基本使用
- Android自学笔记-13-ContentObserver内容观察者
- Android中内容观察者的使用---- ContentObserver
- 无废话Android之内容观察者ContentObserver、获取和保存系统的联系人信息、网络图片查看器、网络html查看器、使用异步框架Android-Async-Http(4)
- android之ContentObserver内容观察者的使用
- Android -- ContentObserver 内容观察者
- Android -- ContentObserver 内容观察者
- android中ContentObserver——内容观察者
- Android内容观察者 --ContentObserver(待写)
- Android 中的内容观察者ContentObserver
- Android ContentProvider之ContentObserver内容观察者
- android下内容观察者: ContentObserver
- android_75_ContentObserver_短信内容观察者
- 内容提供者(ContentProvider)和内容观察者(ContentObserver)的使用(以应用锁为例)
- android 使用contentobserver监听数据库内容变化
- ContentObserver 内容观察者作用及特点
- ContentObserver 内容观察者作用及
- 用ContentObserver内容观察者写了一个自动填写验证码