练手小项目(4)安全卫士——黑名单拦截 利用内容提供者删除通话记录

 上一节,我们讲了 删除通话记录,但是有一个bug 就是 会先出现在通话记录里面,一闪 ,然后就会消失,这对用户体验不好,所以我们要用内容提供者 观察通话记录的变化。

①先得到一个内容管理者 


getContentResolver().registerContentObserver(uri, true, new CallLogObserver( incomingNumber,new Handler()));


②然后给他一个Url 其实可以通过 系统提供的 calllog找到赋值 我直接给url 了

    Uri uri = Uri.parse("content://call_log/calls");

你也可以写 CallLog.Calls.Content_url  不过就不是这么写的了 图方便我还是直接写url了


③然后定义一个观察者进行操作


	private class CallLogObserver extends ContentObserver{
		private String incomingNumber;

		public CallLogObserver(String incomingNumber,Handler handler) {
			super(handler);
			this.incomingNumber = incomingNumber;
		}

		@Override
		public void onChange(boolean selfChange) {
			Log.i(TAG,"数据库的内容变化了,产生了呼叫记录");
			getContentResolver().unregisterContentObserver(this);
			deleteCallLog(incomingNumber);
			super.onChange(selfChange);
		}
		
	}
然后挂断电话即可
endCall();//另外一个进程里面运行的 远程服务的方法。 方法调用后,呼叫记录可能还没有生成。

也就是上一节写的挂断电话 方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值