Android 手机卫士8–删除通话记录

  • 1,815
  • 阅读模式

1.编写代码需要注意bug:

再删除通话记录的时候,删除的是以前的通话记录,本次拦截下来的电话号码,通话记录没有删除??????
问题原因:数据库中本次通话记录的电话号码还没有插入,就做了删除操作

2.bug解决方法:

内容提供者:对外提供数据库的访问方式
内容解析器:用内容提供者提供的访问方式Uri,访问数据库(增删改查)
内容观察者:观察数据库的变化,一旦数据发生改变,调用相应方法

通过内容观察者,观察数据库的插入,一旦有插入,则做删除此条插入数据操作

  1. public void endCall(String phone) {
  2.     ......
  3.         //6,在内容解析器上,去注册内容观察者,通过内容观察者,观察数据库(Uri决定那张表那个库)的变化
  4.         mContentObserver = new MyContentObserver(new Handler(),phone);
  5.         getContentResolver().registerContentObserver(
  6.                 Uri.parse("content://call_log/calls"), true, mContentObserver);
  7.     }
  8. }
  1. class MyContentObserver extends ContentObserver{
  2.     private String phone;
  3.     public MyContentObserver(Handler handler,String phone) {
  4.         super(handler);
  5.         this.phone = phone;
  6.     }
  7.     //数据库中指定calls表发生改变的时候会去调用方法
  8.     @Override
  9.     public void onChange(boolean selfChange) {
  10.         //插入一条数据后,再进行删除
  11.         getContentResolver().delete(
  12.                 Uri.parse("content://call_log/calls"), "number = ?"new String[]{phone});
  13.         super.onChange(selfChange);
  14.     }
  15. }

 

weinxin
我的微信
这是我的微信扫一扫
开拓者博主
  • 本文由 发表于 2016年10月19日07:59:01
  • 转载请务必保留本文链接:https://www.150643.com/374.html
评论:2   其中:访客  2   博主  0
    • 1
      1 0

      while(true){alert(‘你好’);}

      • 小刘
        小刘 2

        嗯,很好

      匿名

      发表评论

      匿名网友 填写信息