首页 > 代码库 > Android 手机卫士8--删除通话记录
Android 手机卫士8--删除通话记录
1.编写代码需要注意bug:
再删除通话记录的时候,删除的是以前的通话记录,本次拦截下来的电话号码,通话记录没有删除??????
问题原因:数据库中本次通话记录的电话号码还没有插入,就做了删除操作
2.bug解决方法:
内容提供者:对外提供数据库的访问方式
内容解析器:用内容提供者提供的访问方式Uri,访问数据库(增删改查)
内容观察者:观察数据库的变化,一旦数据发生改变,调用相应方法
通过内容观察者,观察数据库的插入,一旦有插入,则做删除此条插入数据操作
public void endCall(String phone) { ...... //6,在内容解析器上,去注册内容观察者,通过内容观察者,观察数据库(Uri决定那张表那个库)的变化 mContentObserver = new MyContentObserver(new Handler(),phone); getContentResolver().registerContentObserver( Uri.parse("content://call_log/calls"), true, mContentObserver); } }
class MyContentObserver extends ContentObserver{ private String phone; public MyContentObserver(Handler handler,String phone) { super(handler); this.phone = phone; } //数据库中指定calls表发生改变的时候会去调用方法 @Override public void onChange(boolean selfChange) { //插入一条数据后,再进行删除 getContentResolver().delete( Uri.parse("content://call_log/calls"), "number = ?", new String[]{phone}); super.onChange(selfChange); } }
Android 手机卫士8--删除通话记录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。