`

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

 
阅读更多

ContentObserver有点类似于BroadcastReceiver,当某类事件发生时进行调用.ContentObserver一般和系统或第三方程序提供的Provider一起使用.

当为某个URI注册了ContentObserver后,对其进行操作后都会调用注册的回调函数,以监视未接电话为例(未读短信和未接电话类似,只需将URI改为短信的URI就可以了):

// 注册ContentObserver   
getContentResolver().registerContentObserver(CallLog.Calls.CONTENT_URI, false, new MissedCallContentObserver(this,    
  
new Handler()));   
  
// 当有call log时,就会对这个类进行回调   
public class MissedCallContentObserver extends ContentObserver {   
       
    private Context ctx;   
       
    private static final String TAG = "MissedCallContentObserver";   
       
    public MissedCallContentObserver(Context context, Handler handler) {   
        super(handler);   
        ctx = context;   
    }   
  
    @Override  
    public void onChange(boolean selfChange) {   
           
        Cursor csr = ctx.getContentResolver().query(Calls.CONTENT_URI, new String[] {Calls.NUMBER,    
  
Calls.TYPE, Calls.NEW}, null, null, Calls.DEFAULT_SORT_ORDER);   
           
        if (csr != null) {   
            if (csr.moveToFirst()) {   
                int type = csr.getInt(csr.getColumnIndex(Calls.TYPE));   
                switch (type) {   
                case Calls.MISSED_TYPE:   
                    Log.v(TAG, "missed type");   
                    if (csr.getInt(csr.getColumnIndex(Calls.NEW)) == 1) {   
                        Log.v(TAG, "you have a missed call");   
                    }   
                    break;   
                case Calls.INCOMING_TYPE:   
                    Log.v(TAG, "incoming type");   
                    break;   
                case Calls.OUTGOING_TYPE:   
                    Log.v(TAG, "outgoing type");   
                    break;   
                }   
            }   
            // release resource   
            csr.close();   
        }   
    }   
       
    @Override  
    public boolean deliverSelfNotifications() {   
        return super.deliverSelfNotifications();   
    }   
}  
 
分享到:
评论
3 楼 luyi-jn 2010-03-18  
如何在开机时自动注册这个contentObserver监听短信和未接来电啊?
2 楼 风小却 2009-12-31  
风小却 写道
你好,请问短信的URI是哪个?我一直找不到呢。


啊。。。是这个么?

public static final Uri smsUri = Uri.parse("content://sms");
1 楼 风小却 2009-12-31  
你好,请问短信的URI是哪个?我一直找不到呢。

相关推荐

    Android实现获取未接来电和未读短信数量的方法

    本文实例展示了Android实现获取未接来电和未读短信数量的方法,在Android程序开发中非常常见,是非常实用的功能,现分享给大家供大家参考。具体如下: 一、未读短信   首先注册Observer,当有新短信或彩信来的时候...

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

    主要介绍了Android 中使用ContentObserver模式获取短信用正则自动填充验证码,首先使用了ContentObserver监听短信,然后从短信中用正则的分组去拿到验证码,具体实现代码大家参考下本

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

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

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

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

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

    主要介绍了Android 使用ContentObserver监听数据库内容是否更改的相关资料,ContentObserver内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,需要的朋友可以参考下

    ContentObserver内容观察者

    当ContentProvider将数据共享出来之后,ContentResolver会根据...在有些时候,应用程序需要实时监听ContentProvider所共享数据的改变,并随着ContentProvider的数据的改变而提供响应,这就需要利用contentObserver。

    contentprovider+contentobserver

    先运行contentproviderdemo,然后在运行contentobserver工程,在contentobserver中可以对共享数据库中的数据增删改查,还可以监听数据库变化,实时改变布局变化

    详解Android开发中ContentObserver类的使用

    主要介绍了详解Android开发中ContentObserver类的使用,ContentObserver内容观察者主要用来监听uri的改变请情况,需要的朋友可以参考下

    Android 中自定义ContentProvider与ContentObserver的使用简单实例

    Android 中自定义ContentProvider与ContentObserver的使用简单实例 示例说明: 该示例中一共包含两个工程。其中一个工程完成了自定义ContentProvider,另外一个工程用于测试该自定义ContentProvider且在该工程中使用...

    ContentObserverTest

    当收到消息时候,短信数据库监听触发,这时候可以去把收到的短信读出来。这个方法可以弥补魅族或者小米这样的定制手机屏蔽了监听短信息接收的功能。用ContentObserver这个监听类去实现监听短信。

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

    主要为大家详细介绍了Android采取ContentObserver方式自动获取验证码,感兴趣的小伙伴们可以参考一下

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

    自定义ContentObserver监听数据库数据变化,在Observer里面的onChange实现回调,这里可以获取到最新变化的那条数据,代码亲测可行

    短信验证码

    可以获取四位纯数字验证码,通过继承使用ContentObserver来注册监听短信变化,用正则表达式提取出验证码,并使用了线程来更新显示UI。

    Android实现短信验证码自动填写

    使用ContentProvider来监听短信数据库的变化,在自定义的ContentObserver当中实现onChange的方法进行监听特定手机号的短信,然后进行信息截取在填充到需要填充的位置。  ContentObserver即为内容监听者,当我们发送...

    拜年短信自动回复 for Android

    应用的原理是,用ContentObserver监控content://sms/,如果有新收到的短信,根据关键词(可以自行设定,也可以用内置的25个关键词)判断是否是拜年短信,如果是SMSManager会自动回复。回复的内容也是自己设置的。 ...

Global site tag (gtag.js) - Google Analytics