From 4e8359d3d59d3648bcefb8bcd1eee9f1bb2954e7 Mon Sep 17 00:00:00 2001 From: weijiaxu Date: Tue, 23 Jan 2018 17:02:43 -0800 Subject: -Add cleaning blocked numbers stored in a separate database when people try to clean calllog database. Bug: 71898641,72104419 Test: On a local device. PiperOrigin-RevId: 183016474 Change-Id: Ib59bf558d5552e9b88c3feee1c47d96791fd542c --- .../databasepopulator/BlockedBumberPopulator.java | 69 ++++++++++++++++++++++ .../dialer/databasepopulator/CallLogPopulator.java | 14 +++-- 2 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 java/com/android/dialer/databasepopulator/BlockedBumberPopulator.java (limited to 'java/com/android/dialer/databasepopulator') diff --git a/java/com/android/dialer/databasepopulator/BlockedBumberPopulator.java b/java/com/android/dialer/databasepopulator/BlockedBumberPopulator.java new file mode 100644 index 000000000..378d487e2 --- /dev/null +++ b/java/com/android/dialer/databasepopulator/BlockedBumberPopulator.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.dialer.databasepopulator; + +import android.annotation.TargetApi; +import android.content.ContentProviderOperation; +import android.content.ContentValues; +import android.content.Context; +import android.content.OperationApplicationException; +import android.os.Build.VERSION_CODES; +import android.os.RemoteException; +import android.provider.BlockedNumberContract; +import android.provider.BlockedNumberContract.BlockedNumbers; +import android.support.annotation.NonNull; +import com.android.dialer.common.Assert; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** Populates the device database with blocked number entries. */ +public class BlockedBumberPopulator { + + private static final List values = + Arrays.asList( + createContentValuesWithNumber("123456789"), createContentValuesWithNumber("987654321")); + + @TargetApi(VERSION_CODES.N) + public static void populateBlockedNumber(@NonNull Context context) { + ArrayList operations = new ArrayList<>(); + for (ContentValues value : values) { + operations.add( + ContentProviderOperation.newInsert(BlockedNumbers.CONTENT_URI) + .withValues(value) + .withYieldAllowed(true) + .build()); + } + try { + context.getContentResolver().applyBatch(BlockedNumberContract.AUTHORITY, operations); + } catch (RemoteException | OperationApplicationException e) { + Assert.fail("error adding block number entries: " + e); + } + } + + @TargetApi(VERSION_CODES.N) + public static void deleteBlockedNumbers(@NonNull Context context) { + // clean BlockedNumbers db + context.getContentResolver().delete(BlockedNumbers.CONTENT_URI, null, null); + } + + private static ContentValues createContentValuesWithNumber(String number) { + ContentValues contentValues = new ContentValues(); + contentValues.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, number); + return contentValues; + } +} diff --git a/java/com/android/dialer/databasepopulator/CallLogPopulator.java b/java/com/android/dialer/databasepopulator/CallLogPopulator.java index dd6dc6420..eeefe70c3 100644 --- a/java/com/android/dialer/databasepopulator/CallLogPopulator.java +++ b/java/com/android/dialer/databasepopulator/CallLogPopulator.java @@ -75,13 +75,13 @@ public final class CallLogPopulator { }; @WorkerThread - public static void populateCallLog(@NonNull Context context) { - populateCallLog(context, false); + public static void populateCallLog(@NonNull Context context, boolean isWithoutMissedCalls) { + populateCallLog(context, isWithoutMissedCalls, false); } @WorkerThread - public static void populateCallLogWithoutMissed(@NonNull Context context) { - populateCallLog(context, true); + public static void populateCallLog(@NonNull Context context) { + populateCallLog(context, false); } @WorkerThread @@ -119,8 +119,8 @@ public final class CallLogPopulator { } @WorkerThread - public static void populateCallLog(@NonNull Context context, boolean isWithoutMissedCalls) { - populateCallLog(context, isWithoutMissedCalls, false); + public static void populateCallLogWithoutMissed(@NonNull Context context) { + populateCallLog(context, true); } @WorkerThread @@ -138,6 +138,8 @@ public final class CallLogPopulator { } } + + @AutoValue abstract static class CallEntry { @NonNull -- cgit v1.2.3