Android 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();   
    }   
}  


目录
相关文章
|
存储 API Android开发
Android接收短信-createFromPdu
Android接收短信-createFromPdu
149 0
Android--短信拦截及IP拨号
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/51025730 public ...
889 0
|
Android开发
Android 在应用图标上设置未读消息数量
Android 在应用图标上设置未读消息数量
1209 2
Android 在应用图标上设置未读消息数量
|
Android开发
android批量发送短信
快过年了,自己写了个android批量发送短信,短信前面添加人名,用来节日发短信,这样别人就不知道我是批量发送的了哈哈哈,当然写的很菜,刚开始玩这个敬请指教  短信发送后去短信列表查看             首先AndroidManifest.
1084 0
|
Android开发
Android BGABadgeView:新消息/未接来电/未读消息/新通知圆球红点提示(1)
 Android BGABadgeView:新消息/未接来电/未读消息/新通知圆球红点提示(1) 现在很多的APP会有新消息/未接来电/未读消息/新通知圆球红点提示,典型的以微信、QQ新消息提示为例,当微信朋友圈有新的朋友更新/发布朋友圈消息后,在微信的底部切换卡上会有一个红色的小圆球红点,表示有新消息,提示用户查看。
1260 0
|
Android开发
Android开源BezierView:仿QQ未读消息99+条的红色气泡
 Android开源BezierView:仿QQ未读消息99+条的红色气泡 在移动版的QQ中,如果用户的QQ消息超过99条,会有这样的消息提示气泡(包含拖动动画): Android第三方开源的BezierView实现了上述QQ的99+条未读消息气泡显示。
966 0
|
XML Android开发 数据格式
仿微信、短信、QQ等消息数目右上角红色小圆球气泡显示(基于Android XML布局文件实现)
效果图如下: 仿微信、短信、来电未接数目、QQ等消息数目右上角红色小圆球气泡显示(基于Android XML布局文件实现)。
1067 0
|
网络协议 Android开发 数据库
android开发之来电、短信、广播综合练习
点击(此处)折叠或打开 package com.example.incoming_number; import java.
831 0