Android - 利用内容提供者删除通话记录
Posted 来世当猪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android - 利用内容提供者删除通话记录相关的知识,希望对你有一定的参考价值。
在我们拦截了电话之后,但是会在通话记录里面显示,我们将使用内容提供者进行删除
ContentResolver contentResolver = getContentResolver();
获取内容提供者
// 呼叫记录的Uri路径
Uri uri = Uri.parse("content://call_log/calls");
contentResolver.delete(uri, "number = ?",new String[] incomingNumber );
需要加入权限
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
虽然删除了电话号码记录,但是会有延迟,所以我们查询电话号码表是否改变了
Uri uri = Uri.parse("content://call_log/calls");
//观察呼叫记录数据库内容是否发生了变化
getContentResolver().registerContentObserver(uri, true,
new CallLogObserver(incomingNumber, new Handler()));
//ContentObserver 上下文观察者
创建一个类,并继承ContentObserver
public class CallLogObserver extends ContentObserver
private String incomingNumber;
public CallLogObserver(String incomingNumber, Handler handler)
super(handler);
// TODO Auto-generated constructor stub
this.incomingNumber = incomingNumber;
//改变删除
@Override
public void onChange(boolean selfChange)
// TODO Auto-generated method stub
super.onChange(selfChange);
getContentResolver().unregisterContentObserver(this);
deletecalllog(incomingNumber);
现在在打一个电话,就不会在有电话记录了
以上是关于Android - 利用内容提供者删除通话记录的主要内容,如果未能解决你的问题,请参考以下文章
android之ContentProvider和Uri具体解释