`

ContentObserver 用法

阅读更多
  1. public class ScreenTest extends Activity {   
  2.        
  3.     class SmsContent extends ContentObserver{   
  4.         private Cursor cursor = null;   
  5.         public SmsContent(Handler handler) {   
  6.             super(handler);   
  7.         }   
  8.            
  9.         /**  
  10.          * @Description 当短信表发送改变时,调用该方法   
  11.          *              需要两种权限  
  12.          *              android.permission.READ_SMS读取短信  
  13.          *              android.permission.WRITE_SMS写短信  
  14.          * @Author Snake  
  15.          * @Date 2010-1-12  
  16.          */  
  17.         @Override  
  18.         public void onChange(boolean selfChange) {   
  19.             // TODO Auto-generated method stub   
  20.             super.onChange(selfChange);   
  21.             //读取收件箱中指定号码的短信   
  22.             cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[]{"_id""address""read"}, " address=? and read=?"new String[]{"12345678901""0"}, "date desc");   
  23.                
  24.             if (cursor != null){   
  25.                 ContentValues values = new ContentValues();   
  26.                 values.put("read""1");        //修改短信为已读模式   
  27.                 cursor.moveToFirst();   
  28.                 while (cursor.isLast()){   
  29.                     //更新当前未读短信状态为已读   
  30.                     getContentResolver().update(Uri.parse("content://sms/inbox"), values, " _id=?"new String[]{""+cursor.getInt(0)});   
  31.                     cursor.moveToNext();   
  32.                 }   
  33.             }   
  34.         }   
  35.     }   
  36.        
  37.     /** Called when the activity is first created. */  
  38.     @Override  
  39.     public void onCreate(Bundle savedInstanceState) {   
  40.         super.onCreate(savedInstanceState);   
  41.         setContentView(R.layout.main);   
  42.         SmsContent content = new SmsContent(new Handler());   
  43.         //注册短信变化监听   
  44.         this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);    
  45.     }   
  46. }  
分享到:
评论
1 楼 songfantasy 2011-07-21  
cursor 不关闭吗??

相关推荐

    Android中内容观察者的使用---- ContentObserver类详解

    2. 注册ContentObserver:在需要开始监听的地方,如Activity或Fragment的onResume()方法中,使用ContentResolver注册ContentObserver。 ```java ContentResolver contentResolver = getContentResolver(); ...

    自定义ContentObserver监听数据库数据变化

    首先,我们需要了解`ContentObserver`的基本用法。`ContentObserver`是一个抽象类,它提供了`onChange()`方法,当所观察的Uri(内容URI)发生改变时,这个方法会被系统调用。要创建一个自定义的`ContentObserver`,...

    ContentObserver内容观察者

    当ContentProvider中的数据通过insert、delete或update方法发生改变时,ContentProvider会调用`getContext().getContentResolver().notifyChange(Uri uri)`来通知所有关注该数据的ContentObserver。这里的Uri参数...

    Android自学笔记-13-ContentObserver内容观察者

    - 注销:当不再需要监听数据变化时,应使用ContentResolver的unregisterContentObserver()方法移除ContentObserver,以避免内存泄漏。 2. **回调方法onChange()**: - 当注册的Uri或其子Uri发生变化时,系统会...

    使用ContentObserver监视未接电话,未读短信

    首先,我们需要在应用中注册 ContentObserver,通过 `getContentResolver().registerContentObserver()` 方法,传入想要观察的 URI 和一个 Handler。对于未接电话,我们使用的是 CallLog.Calls.CONTENT_URI,这是一...

    contentprovider+contentobserver

    在`ContentObserverTest`中,开发者可能会创建一个ContentObserver的实例,然后使用`getContentResolver().registerContentObserver()`方法注册这个观察者,传入ContentProvider的特定URI。一旦注册,每当...

    详解Android开发中ContentObserver类的使用

    创建自定义的ContentObserver时,需要重载onChange()方法,并且可以使用Handler对象来处理与UI的交互。例如,如果你想要在主线程(UI线程)中更新UI,可以使用主线程的Handler对象。对于非UI线程,则可以使用任何...

    Android 使用ContentObserver监听数据库内容是否更改

    ContentObserver允许开发者注册对特定Uri的兴趣,一旦这个Uri对应的数据库有任何更新,ContentObserver的`onChange()`方法就会被调用,从而使得应用程序能够及时响应数据变化。下面将详细介绍如何在Android中使用...

    Android采取ContentObserver方式自动获取验证码

    本文将详细讲解如何使用ContentObserver来实现这一功能。ContentObserver是一种观察数据内容变化的机制,通常用于监听数据库(如SQLite)或ContentProvider中的数据变动。 首先,我们需要在AndroidManifest.xml文件...

    Content Observer Demo 源代码

    "Content Observer Demo 源代码" 是一个关于Android开发的示例项目,它演示了如何使用ContentObserver类来监听系统中的数据变化,特别是与短信(SMS)相关的数据变化。在这个项目中,开发者可以学习到如何实时监控...

    Android 中使用ContentObserver模式获取短信用正则自动填充验证码

    最后,为了性能考虑,记得在不再需要观察短信变化时,使用`unregisterContentObserver()`取消注册ContentObserver,以避免不必要的资源消耗: ```java getContentResolver().unregisterContentObserver(c); ``` 综...

    android Observer(观察者模式)_案例祥解.pdf

    add方法用于增加观察者,remove方法用于删除观察者,notifyWatcher方法用于向观察者传输信息。 3. 具体观察者(ConcreteWatcher) 具体观察者是一个类,实现了抽象观察者的接口。在本例中,具体观察者覆盖了...

    Android observer 使用demo

    在提供的压缩包文件"SubjectObserverDemo"中,很可能包含了一个关于Observer模式的实战例子,可能涵盖了ContentObserver和BroadcastReceiver的使用,通过查看这个示例项目,你可以更深入地理解如何在Android应用中...

    内容观察者

    要使用ContentObserver,首先需要创建一个实现ContentObserver的类,并定义onChange()方法。然后,通过ContentResolver注册ContentObserver,通常在Activity或Service的onResume()方法中进行,而在onPause()或...

    内容观察者模式运用

    除了基本的ContentObserver,还可以结合Handler使用,因为ContentObserver的`onChange`方法是在主线程中调用的。如果更新操作比较耗时,可能会阻塞主线程,这时可以创建一个Handler实例,将耗时操作放在Handler的...

    观察者模式以及在Android开发中的应用

    ContentResolver提供了诸如查询、插入、更新和删除数据等方法,并且支持观察者模式,可以通过registerContentObserver方法注册ContentObserver来监听数据变更。 在Android开发中,通过ContentProvider和...

    sim联系人的增删改查

    创建一个自定义的`ContentObserver`类,继承自`android.database.ContentObserver`,并重写`onChange()`方法,这个方法会在数据发生变化时被调用。 ```java class MySimObserver extends ContentObserver { ...

    android中DownloadManager实现版本更新,监听下载进度实例

    下面详细介绍一下DownloadManager的使用方法以及如何监听下载进度。 首先,DownloadManager是自Android 2.3(API level 9)起提供的系统服务。它允许应用执行后台下载任务,并提供了一系列API来管理这些任务。...

Global site tag (gtag.js) - Google Analytics