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)