在我们拦截了电话之后,但是会在通话记录里面显示,我们将使用内容提供者进行删除
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);
}
}
现在在打一个电话,就不会在有电话记录了