diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2018-01-24 03:34:36 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-01-24 03:34:36 +0000 |
commit | 0e691c844358955ad4f08d5847201a4663b7d844 (patch) | |
tree | 81ac7c44a096baa062a1c214a9e3e61eda1abec9 | |
parent | af52cd8e291e92f9cb4bc7f3585379fe471d20fd (diff) | |
parent | aa8a26e9cd6d4c355f32516bbbf8361b32d8772b (diff) |
Merge changes Ifed43649,Ib59bf558
* changes:
Search no longer crashes if you don't have the contacts permission.
-Add cleaning blocked numbers stored in a separate database when people try to clean calllog database.
5 files changed, 96 insertions, 6 deletions
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<ContentValues> values = + Arrays.asList( + createContentValuesWithNumber("123456789"), createContentValuesWithNumber("987654321")); + + @TargetApi(VERSION_CODES.N) + public static void populateBlockedNumber(@NonNull Context context) { + ArrayList<ContentProviderOperation> 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 diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java index 23f368f54..57e253c7e 100644 --- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java +++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java @@ -28,9 +28,11 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; import com.android.contacts.common.preference.ContactsPreferences; +import com.android.dialer.common.LogUtil; import com.android.dialer.searchfragment.common.Projections; import com.android.dialer.searchfragment.common.SearchCursor; import com.android.dialer.smartdial.SmartDialCursorLoader; +import com.android.dialer.util.PermissionsUtil; /** Cursor Loader for CP2 contacts. */ public final class SearchContactsCursorLoader extends CursorLoader { @@ -80,6 +82,10 @@ public final class SearchContactsCursorLoader extends CursorLoader { @Override public Cursor loadInBackground() { + if (!PermissionsUtil.hasContactsReadPermissions(getContext())) { + LogUtil.i("SearchContactsCursorLoader.loadInBackground", "Contacts permission denied."); + return null; + } return isRegularSearch ? regularSearchLoadInBackground() : dialpadSearchLoadInBackground(); } diff --git a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java index edf5f2403..39c1187a4 100644 --- a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java +++ b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java @@ -25,6 +25,8 @@ import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.provider.ContactsContract; import android.support.annotation.Nullable; +import com.android.dialer.common.LogUtil; +import com.android.dialer.util.PermissionsUtil; import com.google.auto.value.AutoValue; import java.util.ArrayList; import java.util.List; @@ -47,6 +49,15 @@ public final class DirectoriesCursorLoader extends CursorLoader { super(context, getContentUri(), PROJECTION, null, null, ContactsContract.Directory._ID); } + @Override + public Cursor loadInBackground() { + if (!PermissionsUtil.hasContactsReadPermissions(getContext())) { + LogUtil.i("DirectoriesCursorLoader.loadInBackground", "Contacts permission denied."); + return null; + } + return super.loadInBackground(); + } + /** * Creates a complete list of directories from the data set loaded by this loader. * diff --git a/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java b/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java index 450119086..174aab5ad 100644 --- a/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java +++ b/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java @@ -25,6 +25,7 @@ import android.support.v7.app.AppCompatActivity; import android.view.ActionProvider; import com.android.dialer.common.concurrent.DialerExecutor.Worker; import com.android.dialer.common.concurrent.DialerExecutorComponent; +import com.android.dialer.databasepopulator.BlockedBumberPopulator; import com.android.dialer.databasepopulator.CallLogPopulator; import com.android.dialer.databasepopulator.ContactsPopulator; import com.android.dialer.databasepopulator.VoicemailPopulator; @@ -182,6 +183,7 @@ final class SimulatorMainMenu { ContactsPopulator.deleteAllContacts(context); CallLogPopulator.deleteAllCallLog(context); VoicemailPopulator.deleteAllVoicemail(context); + BlockedBumberPopulator.deleteBlockedNumbers(context); return null; } } |