`
mars5337
  • 浏览: 89305 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用ContentObserver监听数据库变化

阅读更多
public class ScreenTest extends Activity {   
       
    class SmsContent extends ContentObserver{   
        private Cursor cursor = null;   
        public SmsContent(Handler handler) {   
            super(handler);   
        }   
           
        /**  
         * @Description 当短信表发送改变时,调用该方法   
         *              需要两种权限  
         *              android.permission.READ_SMS读取短信  
         *              android.permission.WRITE_SMS写短信  
         * @Author Snake  
         * @Date 2010-1-12  
         */  
        @Override  
        public void onChange(boolean selfChange) {   
            // TODO Auto-generated method stub   
            super.onChange(selfChange);   
            //读取收件箱中指定号码的短信   
            cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[]{"_id", "address", "read"}, " address=? and read=?", new String[]{"12345678901", "0"}, "date desc");   
               
            if (cursor != null){   
                ContentValues values = new ContentValues();   
                values.put("read", "1");        //修改短信为已读模式   
                cursor.moveToFirst();   
                while (cursor.isLast()){   
                    //更新当前未读短信状态为已读   
                    getContentResolver().update(Uri.parse("content://sms/inbox"), values, " _id=?", new String[]{""+cursor.getInt(0)});   
                    cursor.moveToNext();   
                }   
            }   
        }   
    }   
       
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);   
        SmsContent content = new SmsContent(new Handler());   
        //注册短信变化监听   
        this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);    
    }   
}  

 

分享到:
评论

相关推荐

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

    在应用不再需要监听数据库变化时,记得注销`ContentObserver`,防止内存泄漏: ```java contentResolver.unregisterContentObserver(myContentObserver); ``` `MyContentObserver`是文件列表中提供的示例类,可能...

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

    不同的MIME Type决定了ContentObserver监听的Uri类型,从而影响其触发的行为。 5. **处理变化的方式** - `onChange()`方法中的`selfChange`参数通常用于区分变化是由ContentObserver自身引起还是由其他外部因素...

    Android数据库内容变化的监听

    Android 系统中有多种方式可以监听数据库中的内容变化,例如使用 CursorAdapter 对象,这些对象可以自动注册到 Uri 上,并在 Uri 的内容发生变化时自动刷新。 Android 数据库内容变化的监听机制是 Android 系统中...

    通过ContentProvider监听数据库中数据变化

    通过ContentProvider(内容提供者)将app中数据库对外开放(当然也可以对app本身开发);然后对数据库的增删改查就通过...然后用ContentObserver(内容观察者)来监听数据是否有变化。当有变化则就调用onChange方法了!

    两个apk之间广播互相通信及ContentProvider监听数据库的变换

    4. 使用ContentObserver:在需要监听数据库变化的地方,创建一个ContentObserver实例,然后通过ContentResolver的registerContentObserver()方法注册。在ContentObserver的onChange()方法中处理数据变化。 现在,...

    20个很有用的android应用程序代码

    使用ContentObserver监听数据库变化 ```java private ContentObserver mDownloadsObserver = new DownloadsChangeObserver(Downloads.CONTENT_URI); ``` 创建一个`ContentObserver`实例来监听特定URI下的内容变化...

    android 监听短信数据库

    通过深入理解`ContentObserver`的使用、如何动态查询和更新短信数据库,以及如何在系统事件中注册监听器,开发者可以更好地利用Android平台提供的强大功能,构建出更加智能和响应迅速的应用程序。同时,需要注意的是...

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

    当ContentResolver中的数据发生变化时,如SQLite数据库中的数据更新或删除,ContentObserver会接收到相应的通知。开发者可以通过实现ContentObserver的onChange()方法来处理这些变化。 二、ContentObserver的工作...

    contentprovider+contentobserver

    在描述中提到的`ContentObserverTest`工程,很可能是用来演示如何使用ContentObserver来监听和响应数据更新的。 在`ContentObserverTest`中,开发者可能会创建一个ContentObserver的实例,然后使用`...

    Android实现静态广播监听器的方法

    4. 创建`ContentObserver`监听数据库变化,并通过`Handler`更新UI。 5. 在活动的生命周期方法中注册和注销`ContentObserver`。 这样的实现方式使得应用能够记录和展示接收到的广播信息,提供了一种跟踪系统广播行为...

    android截图事件监听的原理与实现

    为了解决这些问题,我们需要结合使用`ContentObserver`监听媒体库的变化。`ContentObserver`可以观察到系统媒体数据库的变化,当新的截图被添加到媒体库时,我们同样可以得到通知。同时,我们需要在判断是否为同一...

    详解Android开发中ContentObserver类的使用

    ContentObserver是基于观察者设计模式,可以监听特定URI(统一资源标识符)引起的数据库的变化。当被观察的URI对应的数据库发生变化时,系统会自动调用ContentObserver的onChange()方法。下面详细讲述...

    安卓开发简单的记事本

    当数据改变时,通过ContentObserver监听数据库变化,实时更新UI。 对于文件名称"AndroidStudio简单记事本",这很可能是一个包含源代码和资源文件的项目。在Android Studio中,你需要理解布局文件(XML)如何定义...

    黑马程序员安卓教程:内容观察者的原理.docx

    2. 观察者(ContentObserver):使用 ContentObserver 来观察指定 Uri 引起的数据库变化,继而做一些相应的处理。这种方式效率高内存消耗少,在项目中应该使用这种方法。 在使用 ContentObserver 时,我们需要注册...

    内容观察者

    内容观察者(ContentObserver)是Android系统中一个关键的组件,它主要用于监控数据内容的变化,如联系人、短信等数据库的变更。这个概念是基于观察者模式,它允许应用程序订阅并接收数据变化的通知,以便在数据发生...

    android监听手机app启动

    - **监听**:在Android中,监听通常涉及注册广播接收器、服务或者ContentObserver,用于监听特定事件的发生,如系统广播、数据库变化等。 - **打开app**:在Android中,应用的启动和关闭都是通过Activity的生命周期...

    android多线程下载断点续传

    5. 监听数据库:通过ContentObserver监听数据库变化,实时更新UI显示的下载进度。 6. 恢复下载:应用程序启动时检查数据库中的未完成任务,恢复断点续传下载。 五、优化与注意事项 1. 错误处理:对网络异常、磁盘...

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

    综上所述,通过结合ContentObserver监听短信变化和正则表达式解析短信内容,我们可以实现在Android应用中自动填充接收到的验证码,从而提升用户体验。但需要注意的是,为了用户的隐私和安全,务必遵循相关法律法规,...

Global site tag (gtag.js) - Google Analytics