Android 下删除手机呼叫记录的两种方法:

本文介绍了两种删除Android设备上通话记录的方法:一是直接通过ContentResolver删除指定电话号码的通话记录;二是通过监听通话记录数据库的变化并自动删除指定号码的记录。实现这两种方法都需要添加特定的权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种:直接删除
1、获得内容解析者
ContentResolver resolver = getContentResolver();
2、构造uri
Uri uri = Uri.parse("content://call_log/calls");
3、根据手机号码直接删除
resolver.delete(uri, "number=?", new String[]{incomingNumber});
第二种:监听存储通话记录的数据库的变化来删除
1、构造uri
Uri uri = Uri.parse("content://call_log/calls");
/*第二个参数,true 只要uri前面有匹配则默认发生变化 false要完全匹配*/
2、通过ContentResolve注册一个观察者
getContentResolver().registerContentObserver(uri, true, new CallLogObserver(incomingNumber, new Handler()
));
 
private class CallLogObserver extends ContentObserver {
private String incomingNumber;

/**
* Creates a content observer.
*
* @param handler The handler to run {@link #onChange} on, or null if none.
*/
//重写构造方法,传入一个号码
public CallLogObserver(String incomingNumber, Handler handler) {
super(handler);
this.incomingNumber = incomingNumber;
}
//数据发生变化时调用
@Override
public void onChange(boolean selfChange) {
Log.i(TAG, "数据库内容变化,产生呼叫记录");
deleteCallLog(incomingNumber);
//删除后注销观察者
getContentResolver().unregisterContentObserver(this);
super.onChange(selfChange);
}
}
private void deleteCallLog(String incomingNumber) {
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://call_log/calls");
resolver.delete(uri, "number=?", new String[]{incomingNumber});

}
总结,第二种方法也是迪调用第一种方法进行删除,需添加权限
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />

转载于:https://my.oschina.net/zaizaiangels/blog/528085

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值