Android ContentObserver监视未接电话,未读短信

http://blog.csdn.net/catoop/article/details/8040416

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

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

[java]  view plain copy
  1. // 注册ContentObserver     
  2. getContentResolver().registerContentObserver(CallLog.Calls.CONTENT_URI, falsenew MissedCallContentObserver(this,      
  3.     
  4. new Handler()));     
  5.     
  6. // 当有call log时,就会对这个类进行回调     
  7. public class MissedCallContentObserver extends ContentObserver {     
  8.          
  9.     private Context ctx;     
  10.          
  11.     private static final String TAG = "MissedCallContentObserver";     
  12.          
  13.     public MissedCallContentObserver(Context context, Handler handler) {     
  14.         super(handler);     
  15.         ctx = context;     
  16.     }     
  17.     
  18.     @Override    
  19.     public void onChange(boolean selfChange) {     
  20.              
  21.         Cursor csr = ctx.getContentResolver().query(Calls.CONTENT_URI, new String[] {Calls.NUMBER,      
  22.     
  23. Calls.TYPE, Calls.NEW}, nullnull, Calls.DEFAULT_SORT_ORDER);     
  24.              
  25.         if (csr != null) {     
  26.             if (csr.moveToFirst()) {     
  27.                 int type = csr.getInt(csr.getColumnIndex(Calls.TYPE));     
  28.                 switch (type) {     
  29.                 case Calls.MISSED_TYPE:     
  30.                     Log.v(TAG, "missed type");     
  31.                     if (csr.getInt(csr.getColumnIndex(Calls.NEW)) == 1) {     
  32.                         Log.v(TAG, "you have a missed call");     
  33.                     }     
  34.                     break;     
  35.                 case Calls.INCOMING_TYPE:     
  36.                     Log.v(TAG, "incoming type");     
  37.                     break;     
  38.                 case Calls.OUTGOING_TYPE:     
  39.                     Log.v(TAG, "outgoing type");     
  40.                     break;     
  41.                 }     
  42.             }     
  43.             // release resource     
  44.             csr.close();     
  45.         }     
  46.     }     
  47.          
  48.     @Override    
  49.     public boolean deliverSelfNotifications() {     
  50.         return super.deliverSelfNotifications();     
  51.     }     
  52. }    


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值