您的位置:首页 > 移动开发 > Android开发

Android - 利用内容提供者删除通话记录

2016-02-15 21:18 453 查看
在我们拦截了电话之后,但是会在通话记录里面显示,我们将使用内容提供者进行删除

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);
}
}
现在在打一个电话,就不会在有电话记录了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: