From 437ae9552cce7768068fa92663740711ee541417 Mon Sep 17 00:00:00 2001 From: linyuh Date: Mon, 26 Mar 2018 12:46:18 -0700 Subject: Remove obsolete version checks and compat utilities after min SDK was bumped up to N. Test: Existing tests PiperOrigin-RevId: 190508397 Change-Id: Ia5f33e45af1d1cc666fec5f43efa564b2b68c193 --- java/com/android/dialer/animation/AnimUtils.java | 9 +- .../android/dialer/app/calllog/CallLogAdapter.java | 6 +- .../dialer/app/list/DragDropController.java | 19 +--- .../app/settings/DialerSettingsActivity.java | 2 +- .../android/dialer/common/cp2/DirectoryCompat.java | 56 ---------- .../android/dialer/common/cp2/DirectoryUtils.java | 35 ++++++ java/com/android/dialer/compat/ActivityCompat.java | 29 ----- java/com/android/dialer/compat/CompatUtils.java | 21 ++-- .../dialer/compat/PathInterpolatorCompat.java | 120 --------------------- .../cp2/Cp2ExtendedDirectoryPhoneLookup.java | 17 +-- .../dialer/phonenumbercache/CallLogQuery.java | 21 +--- .../dialer/phonenumbercache/ContactInfoHelper.java | 9 +- .../dialer/phonenumbercache/PhoneLookupUtil.java | 40 ------- .../dialer/phonenumbercache/PhoneQuery.java | 57 +++------- .../directories/DirectoriesCursorLoader.java | 17 ++- .../directories/DirectoryContactViewHolder.java | 4 +- .../directories/DirectoryContactsCursor.java | 4 +- .../directories/DirectoryContactsCursorLoader.java | 17 +-- .../strictmode/impl/SystemDialerStrictMode.java | 3 +- java/com/android/dialer/util/DialerUtils.java | 7 +- .../voicemail/listui/error/VoicemailStatus.java | 14 +-- .../voicemailstatus/VoicemailStatusQuery.java | 24 ++--- 22 files changed, 117 insertions(+), 414 deletions(-) delete mode 100644 java/com/android/dialer/common/cp2/DirectoryCompat.java create mode 100644 java/com/android/dialer/common/cp2/DirectoryUtils.java delete mode 100644 java/com/android/dialer/compat/ActivityCompat.java delete mode 100644 java/com/android/dialer/compat/PathInterpolatorCompat.java delete mode 100644 java/com/android/dialer/phonenumbercache/PhoneLookupUtil.java (limited to 'java/com/android/dialer') diff --git a/java/com/android/dialer/animation/AnimUtils.java b/java/com/android/dialer/animation/AnimUtils.java index 9c9396e56..9160cf58a 100644 --- a/java/com/android/dialer/animation/AnimUtils.java +++ b/java/com/android/dialer/animation/AnimUtils.java @@ -22,17 +22,16 @@ import android.animation.ValueAnimator; import android.view.View; import android.view.ViewPropertyAnimator; import android.view.animation.Interpolator; -import com.android.dialer.compat.PathInterpolatorCompat; +import android.view.animation.PathInterpolator; public class AnimUtils { public static final int DEFAULT_DURATION = -1; public static final int NO_DELAY = 0; - public static final Interpolator EASE_IN = PathInterpolatorCompat.create(0.0f, 0.0f, 0.2f, 1.0f); - public static final Interpolator EASE_OUT = PathInterpolatorCompat.create(0.4f, 0.0f, 1.0f, 1.0f); - public static final Interpolator EASE_OUT_EASE_IN = - PathInterpolatorCompat.create(0.4f, 0, 0.2f, 1); + public static final Interpolator EASE_IN = new PathInterpolator(0.0f, 0.0f, 0.2f, 1.0f); + public static final Interpolator EASE_OUT = new PathInterpolator(0.4f, 0.0f, 1.0f, 1.0f); + public static final Interpolator EASE_OUT_EASE_IN = new PathInterpolator(0.4f, 0, 0.2f, 1); public static void crossFadeViews(View fadeIn, View fadeOut, int duration) { fadeIn(fadeIn, duration); diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java index de9b95e34..d25a2f38d 100644 --- a/java/com/android/dialer/app/calllog/CallLogAdapter.java +++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java @@ -945,10 +945,8 @@ public class CallLogAdapter extends GroupingListAdapter Cursor cursor, int count, final CallLogListItemViewHolder views) { Assert.isMainThread(); final String number = cursor.getString(CallLogQuery.NUMBER); - final String postDialDigits = - (VERSION.SDK_INT >= VERSION_CODES.N) ? cursor.getString(CallLogQuery.POST_DIAL_DIGITS) : ""; - final String viaNumber = - (VERSION.SDK_INT >= VERSION_CODES.N) ? cursor.getString(CallLogQuery.VIA_NUMBER) : ""; + final String postDialDigits = cursor.getString(CallLogQuery.POST_DIAL_DIGITS); + final String viaNumber = cursor.getString(CallLogQuery.VIA_NUMBER); final int numberPresentation = cursor.getInt(CallLogQuery.NUMBER_PRESENTATION); final ContactInfo cachedContactInfo = ContactInfoHelper.getContactInfo(cursor); final int transcriptionState = diff --git a/java/com/android/dialer/app/list/DragDropController.java b/java/com/android/dialer/app/list/DragDropController.java index 458e31e69..1c33a8a09 100644 --- a/java/com/android/dialer/app/list/DragDropController.java +++ b/java/com/android/dialer/app/list/DragDropController.java @@ -16,8 +16,6 @@ package com.android.dialer.app.list; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; import android.view.View; import java.util.ArrayList; import java.util.List; @@ -38,22 +36,15 @@ public class DragDropController { /** @return True if the drag is started, false if the drag is cancelled for some reason. */ boolean handleDragStarted(View v, int x, int y) { - int screenX = x; - int screenY = y; - // The coordinates in dragEvent of DragEvent.ACTION_DRAG_STARTED before NYC is window-related. - // This is fixed in NYC. - if (VERSION.SDK_INT >= VERSION_CODES.N) { - v.getLocationOnScreen(locationOnScreen); - screenX = x + locationOnScreen[0]; - screenY = y + locationOnScreen[1]; - } - final PhoneFavoriteSquareTileView tileView = - dragItemContainer.getViewForLocation(screenX, screenY); + v.getLocationOnScreen(locationOnScreen); + x = x + locationOnScreen[0]; + y = y + locationOnScreen[1]; + final PhoneFavoriteSquareTileView tileView = dragItemContainer.getViewForLocation(x, y); if (tileView == null) { return false; } for (int i = 0; i < onDragDropListeners.size(); i++) { - onDragDropListeners.get(i).onDragStarted(screenX, screenY, tileView); + onDragDropListeners.get(i).onDragStarted(x, y, tileView); } return true; diff --git a/java/com/android/dialer/app/settings/DialerSettingsActivity.java b/java/com/android/dialer/app/settings/DialerSettingsActivity.java index 09fe03ef5..6b763aeb3 100644 --- a/java/com/android/dialer/app/settings/DialerSettingsActivity.java +++ b/java/com/android/dialer/app/settings/DialerSettingsActivity.java @@ -128,7 +128,7 @@ public class DialerSettingsActivity extends AppCompatPreferenceActivity { callSettingsHeader.titleRes = R.string.call_settings_label; callSettingsHeader.intent = callSettingsIntent; target.add(callSettingsHeader); - } else if ((VERSION.SDK_INT >= VERSION_CODES.N) || isPrimaryUser) { + } else if (isPrimaryUser) { Header phoneAccountSettingsHeader = new Header(); Intent phoneAccountSettingsIntent = new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS); phoneAccountSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); diff --git a/java/com/android/dialer/common/cp2/DirectoryCompat.java b/java/com/android/dialer/common/cp2/DirectoryCompat.java deleted file mode 100644 index 3e33394a2..000000000 --- a/java/com/android/dialer/common/cp2/DirectoryCompat.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2015 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.common.cp2; - -import android.net.Uri; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; -import android.provider.ContactsContract.Directory; - -/** Compatibility utility for {@link Directory}. */ -public class DirectoryCompat { - - public static Uri getContentUri() { - if (VERSION.SDK_INT >= VERSION_CODES.N) { - return Directory.ENTERPRISE_CONTENT_URI; - } - return Directory.CONTENT_URI; - } - - public static boolean isInvisibleDirectory(long directoryId) { - if (VERSION.SDK_INT >= VERSION_CODES.N) { - return (directoryId == Directory.LOCAL_INVISIBLE - || directoryId == Directory.ENTERPRISE_LOCAL_INVISIBLE); - } - return directoryId == Directory.LOCAL_INVISIBLE; - } - - public static boolean isRemoteDirectoryId(long directoryId) { - if (VERSION.SDK_INT >= VERSION_CODES.N) { - return Directory.isRemoteDirectoryId(directoryId); - } - return directoryId != Directory.DEFAULT && directoryId != Directory.LOCAL_INVISIBLE; - } - - public static boolean isEnterpriseDirectoryId(long directoryId) { - return VERSION.SDK_INT >= VERSION_CODES.N && Directory.isEnterpriseDirectoryId(directoryId); - } - - public static boolean isOnlyEnterpriseDirectoryId(long directoryId) { - return isEnterpriseDirectoryId(directoryId) && !isRemoteDirectoryId(directoryId); - } -} diff --git a/java/com/android/dialer/common/cp2/DirectoryUtils.java b/java/com/android/dialer/common/cp2/DirectoryUtils.java new file mode 100644 index 000000000..fa5a226e6 --- /dev/null +++ b/java/com/android/dialer/common/cp2/DirectoryUtils.java @@ -0,0 +1,35 @@ +/* + * 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.common.cp2; + +import android.provider.ContactsContract.Directory; + +/** Utilities for {@link Directory}. */ +public class DirectoryUtils { + + /** Returns true if the given ID belongs to an invisible directory. */ + public static boolean isInvisibleDirectoryId(long directoryId) { + return directoryId == Directory.LOCAL_INVISIBLE + || directoryId == Directory.ENTERPRISE_LOCAL_INVISIBLE; + } + + /** Returns true if the given ID belongs to a local enterprise directory. */ + public static boolean isLocalEnterpriseDirectoryId(long directoryId) { + return Directory.isEnterpriseDirectoryId(directoryId) + && !Directory.isRemoteDirectoryId(directoryId); + } +} diff --git a/java/com/android/dialer/compat/ActivityCompat.java b/java/com/android/dialer/compat/ActivityCompat.java deleted file mode 100644 index e59b11593..000000000 --- a/java/com/android/dialer/compat/ActivityCompat.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2016 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.compat; - -import android.app.Activity; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; - -/** Utility for calling methods introduced after Marshmallow for Activities. */ -public class ActivityCompat { - - public static boolean isInMultiWindowMode(Activity activity) { - return VERSION.SDK_INT >= VERSION_CODES.N && activity.isInMultiWindowMode(); - } -} diff --git a/java/com/android/dialer/compat/CompatUtils.java b/java/com/android/dialer/compat/CompatUtils.java index d09f8b0e1..f0039e930 100644 --- a/java/com/android/dialer/compat/CompatUtils.java +++ b/java/com/android/dialer/compat/CompatUtils.java @@ -16,15 +16,14 @@ package com.android.dialer.compat; import android.content.Context; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; import android.os.LocaleList; import java.util.Locale; -/** TODO(calderwoodra): documentation */ +/** TODO(linyuh): Remove deprecated methods and rename this class. */ public final class CompatUtils { /** PrioritizedMimeType is added in API level 23. */ + @Deprecated public static boolean hasPrioritizedMimeType() { return true; } @@ -35,6 +34,7 @@ public final class CompatUtils { * * @return {@code true} if multi-SIM capability is available, {@code false} otherwise. */ + @Deprecated public static boolean isMSIMCompatible() { return true; } @@ -45,6 +45,7 @@ public final class CompatUtils { * * @return {@code true} if video calling is allowed, {@code false} otherwise. */ + @Deprecated public static boolean isVideoCompatible() { return true; } @@ -55,6 +56,7 @@ public final class CompatUtils { * * @return {@code true} if video presence checking is allowed, {@code false} otherwise. */ + @Deprecated public static boolean isVideoPresenceCompatible() { return true; } @@ -65,20 +67,17 @@ public final class CompatUtils { * * @return {@code true} if call subject is a feature on this device, {@code false} otherwise. */ + @Deprecated public static boolean isCallSubjectCompatible() { return true; } /** Returns locale of the device. */ public static Locale getLocale(Context context) { - if (VERSION.SDK_INT >= VERSION_CODES.N) { - LocaleList localList = context.getResources().getConfiguration().getLocales(); - if (!localList.isEmpty()) { - return localList.get(0); - } - return Locale.getDefault(); - } else { - return context.getResources().getConfiguration().locale; + LocaleList localList = context.getResources().getConfiguration().getLocales(); + if (!localList.isEmpty()) { + return localList.get(0); } + return Locale.getDefault(); } } diff --git a/java/com/android/dialer/compat/PathInterpolatorCompat.java b/java/com/android/dialer/compat/PathInterpolatorCompat.java deleted file mode 100644 index d0d410d7b..000000000 --- a/java/com/android/dialer/compat/PathInterpolatorCompat.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (C) 2015 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.compat; - -import android.graphics.Path; -import android.graphics.PathMeasure; -import android.os.Build; -import android.view.animation.Interpolator; -import android.view.animation.PathInterpolator; - -public class PathInterpolatorCompat { - - public static Interpolator create( - float controlX1, float controlY1, float controlX2, float controlY2) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - return new PathInterpolator(controlX1, controlY1, controlX2, controlY2); - } - return new PathInterpolatorBase(controlX1, controlY1, controlX2, controlY2); - } - - private static class PathInterpolatorBase implements Interpolator { - - /** Governs the accuracy of the approximation of the {@link Path}. */ - private static final float PRECISION = 0.002f; - - private final float[] x; - private final float[] y; - - public PathInterpolatorBase(Path path) { - final PathMeasure pathMeasure = new PathMeasure(path, false /* forceClosed */); - - final float pathLength = pathMeasure.getLength(); - final int numPoints = (int) (pathLength / PRECISION) + 1; - - x = new float[numPoints]; - y = new float[numPoints]; - - final float[] position = new float[2]; - for (int i = 0; i < numPoints; ++i) { - final float distance = (i * pathLength) / (numPoints - 1); - pathMeasure.getPosTan(distance, position, null /* tangent */); - - x[i] = position[0]; - y[i] = position[1]; - } - } - - public PathInterpolatorBase(float controlX, float controlY) { - this(createQuad(controlX, controlY)); - } - - public PathInterpolatorBase( - float controlX1, float controlY1, float controlX2, float controlY2) { - this(createCubic(controlX1, controlY1, controlX2, controlY2)); - } - - private static Path createQuad(float controlX, float controlY) { - final Path path = new Path(); - path.moveTo(0.0f, 0.0f); - path.quadTo(controlX, controlY, 1.0f, 1.0f); - return path; - } - - private static Path createCubic( - float controlX1, float controlY1, float controlX2, float controlY2) { - final Path path = new Path(); - path.moveTo(0.0f, 0.0f); - path.cubicTo(controlX1, controlY1, controlX2, controlY2, 1.0f, 1.0f); - return path; - } - - @Override - public float getInterpolation(float t) { - if (t <= 0.0f) { - return 0.0f; - } else if (t >= 1.0f) { - return 1.0f; - } - - // Do a binary search for the correct x to interpolate between. - int startIndex = 0; - int endIndex = x.length - 1; - while (endIndex - startIndex > 1) { - int midIndex = (startIndex + endIndex) / 2; - if (t < x[midIndex]) { - endIndex = midIndex; - } else { - startIndex = midIndex; - } - } - - final float xRange = x[endIndex] - x[startIndex]; - if (xRange == 0) { - return y[startIndex]; - } - - final float tInRange = t - x[startIndex]; - final float fraction = tInRange / xRange; - - final float startY = y[startIndex]; - final float endY = y[endIndex]; - - return startY + (fraction * (endY - startY)); - } - } -} diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java index e497989c7..2b98f265c 100644 --- a/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java @@ -19,15 +19,13 @@ package com.android.dialer.phonelookup.cp2; import android.content.Context; import android.database.Cursor; import android.net.Uri; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; import android.provider.ContactsContract; +import android.provider.ContactsContract.Directory; import android.support.annotation.VisibleForTesting; import com.android.dialer.DialerPhoneNumber; import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor; import com.android.dialer.common.concurrent.Annotations.LightweightExecutor; -import com.android.dialer.common.cp2.DirectoryCompat; import com.android.dialer.inject.ApplicationContext; import com.android.dialer.phonelookup.PhoneLookup; import com.android.dialer.phonelookup.PhoneLookupInfo; @@ -80,7 +78,7 @@ public final class Cp2ExtendedDirectoryPhoneLookup implements PhoneLookup= VERSION_CODES.N - ? ContactsContract.PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI - : ContactsContract.PhoneLookup.CONTENT_FILTER_URI; - Uri.Builder builder = - baseUri + ContactsContract.PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI .buildUpon() .appendPath(number) .appendQueryParameter( @@ -197,8 +190,8 @@ public final class Cp2ExtendedDirectoryPhoneLookup implements PhoneLookup projectionList = new ArrayList<>(Arrays.asList(PROJECTION_M)); - projectionList.add(CallLog.Calls.POST_DIAL_DIGITS); - projectionList.add(CallLog.Calls.VIA_NUMBER); - PROJECTION_N = projectionList.toArray(new String[projectionList.size()]); - } - private static final String[] PROJECTION_O; // TODO(mdooley): remove when this becomes a public api @@ -114,12 +107,6 @@ public final class CallLogQuery { @NonNull public static String[] getProjection() { - if (VERSION.SDK_INT >= VERSION_CODES.O) { - return PROJECTION_O; - } - if (VERSION.SDK_INT >= VERSION_CODES.N) { - return PROJECTION_N; - } - return PROJECTION_M; + return VERSION.SDK_INT >= VERSION_CODES.O ? PROJECTION_O : PROJECTION_N; } } diff --git a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java index d6e378cf2..777175e00 100644 --- a/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java +++ b/java/com/android/dialer/phonenumbercache/ContactInfoHelper.java @@ -35,7 +35,6 @@ import com.android.contacts.common.ContactsUtils.UserType; import com.android.contacts.common.util.Constants; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; -import com.android.dialer.common.cp2.DirectoryCompat; import com.android.dialer.logging.ContactSource; import com.android.dialer.oem.CequintCallerIdManager; import com.android.dialer.oem.CequintCallerIdManager.CequintCallerIdContact; @@ -107,12 +106,12 @@ public class ContactInfoHelper { if (directoryId != null) { // Query {@link Contacts#CONTENT_LOOKUP_URI} with work lookup key is not allowed. - if (DirectoryCompat.isEnterpriseDirectoryId(directoryId)) { + if (Directory.isEnterpriseDirectoryId(directoryId)) { return null; } // Skip this to avoid an extra remote network call for alternative name - if (DirectoryCompat.isRemoteDirectoryId(directoryId)) { + if (Directory.isRemoteDirectoryId(directoryId)) { return null; } } @@ -289,7 +288,7 @@ public class ContactInfoHelper { try { while (cursor.moveToNext()) { long directoryId = cursor.getLong(idIndex); - if (DirectoryCompat.isRemoteDirectoryId(directoryId)) { + if (Directory.isRemoteDirectoryId(directoryId)) { remoteDirectories.add(directoryId); } } @@ -323,7 +322,7 @@ public class ContactInfoHelper { .getContentResolver() .query( uri, - PhoneQuery.getPhoneLookupProjection(uri), + PhoneQuery.getPhoneLookupProjection(), null /* selection */, null /* selectionArgs */, null /* sortOrder */)) { diff --git a/java/com/android/dialer/phonenumbercache/PhoneLookupUtil.java b/java/com/android/dialer/phonenumbercache/PhoneLookupUtil.java deleted file mode 100644 index 74175e8ba..000000000 --- a/java/com/android/dialer/phonenumbercache/PhoneLookupUtil.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2016 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.phonenumbercache; - -import android.net.Uri; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; -import android.provider.ContactsContract; -import android.provider.ContactsContract.PhoneLookup; - -public final class PhoneLookupUtil { - - private PhoneLookupUtil() {} - - /** @return the column name that stores contact id for phone lookup query. */ - public static String getContactIdColumnNameForUri(Uri phoneLookupUri) { - if (VERSION.SDK_INT >= VERSION_CODES.N) { - return PhoneLookup.CONTACT_ID; - } - // In pre-N, contact id is stored in {@link PhoneLookup#_ID} in non-sip query. - boolean isSip = - phoneLookupUri.getBooleanQueryParameter( - ContactsContract.PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, false); - return (isSip) ? PhoneLookup.CONTACT_ID : ContactsContract.PhoneLookup._ID; - } -} diff --git a/java/com/android/dialer/phonenumbercache/PhoneQuery.java b/java/com/android/dialer/phonenumbercache/PhoneQuery.java index 5ddd5f846..a43e489e5 100644 --- a/java/com/android/dialer/phonenumbercache/PhoneQuery.java +++ b/java/com/android/dialer/phonenumbercache/PhoneQuery.java @@ -16,10 +16,6 @@ package com.android.dialer.phonenumbercache; -import android.net.Uri; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; -import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.PhoneLookup; @@ -27,27 +23,27 @@ import android.provider.ContactsContract.PhoneLookup; /** The queries to look up the {@link ContactInfo} for a given number in the Call Log. */ final class PhoneQuery { - public static final int PERSON_ID = 0; - public static final int NAME = 1; - public static final int PHONE_TYPE = 2; - public static final int LABEL = 3; - public static final int MATCHED_NUMBER = 4; - public static final int NORMALIZED_NUMBER = 5; - public static final int PHOTO_ID = 6; - public static final int LOOKUP_KEY = 7; - public static final int PHOTO_URI = 8; + static final int PERSON_ID = 0; + static final int NAME = 1; + static final int PHONE_TYPE = 2; + static final int LABEL = 3; + static final int MATCHED_NUMBER = 4; + static final int NORMALIZED_NUMBER = 5; + static final int PHOTO_ID = 6; + static final int LOOKUP_KEY = 7; + static final int PHOTO_URI = 8; /** Projection to look up a contact's DISPLAY_NAME_ALTERNATIVE */ - public static final String[] DISPLAY_NAME_ALTERNATIVE_PROJECTION = + static final String[] DISPLAY_NAME_ALTERNATIVE_PROJECTION = new String[] { Contacts.DISPLAY_NAME_ALTERNATIVE, }; - public static final int NAME_ALTERNATIVE = 0; + static final int NAME_ALTERNATIVE = 0; - public static final String[] ADDITIONAL_CONTACT_INFO_PROJECTION = + static final String[] ADDITIONAL_CONTACT_INFO_PROJECTION = new String[] {Phone.DISPLAY_NAME_ALTERNATIVE, Phone.CARRIER_PRESENCE}; - public static final int ADDITIONAL_CONTACT_INFO_DISPLAY_NAME_ALTERNATIVE = 0; - public static final int ADDITIONAL_CONTACT_INFO_CARRIER_PRESENCE = 1; + static final int ADDITIONAL_CONTACT_INFO_DISPLAY_NAME_ALTERNATIVE = 0; + static final int ADDITIONAL_CONTACT_INFO_CARRIER_PRESENCE = 1; /** * Projection to look up the ContactInfo. Does not include DISPLAY_NAME_ALTERNATIVE as that column @@ -66,31 +62,8 @@ final class PhoneQuery { PhoneLookup.LOOKUP_KEY, PhoneLookup.PHOTO_URI }; - /** - * Similar to {@link PHONE_LOOKUP_PROJECTION}. In pre-N, contact id is stored in {@link - * PhoneLookup#_ID} in non-sip query. - */ - private static final String[] BACKWARD_COMPATIBLE_NON_SIP_PHONE_LOOKUP_PROJECTION = - new String[] { - PhoneLookup._ID, - PhoneLookup.DISPLAY_NAME, - PhoneLookup.TYPE, - PhoneLookup.LABEL, - PhoneLookup.NUMBER, - PhoneLookup.NORMALIZED_NUMBER, - PhoneLookup.PHOTO_ID, - PhoneLookup.LOOKUP_KEY, - PhoneLookup.PHOTO_URI - }; - public static String[] getPhoneLookupProjection(Uri phoneLookupUri) { - if (VERSION.SDK_INT >= VERSION_CODES.N) { + static String[] getPhoneLookupProjection() { return PHONE_LOOKUP_PROJECTION; - } - // Pre-N - boolean isSip = - phoneLookupUri.getBooleanQueryParameter( - ContactsContract.PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, false); - return (isSip) ? PHONE_LOOKUP_PROJECTION : BACKWARD_COMPATIBLE_NON_SIP_PHONE_LOOKUP_PROJECTION; } } diff --git a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java index 4d7ea3f3d..754e055f0 100644 --- a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java +++ b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java @@ -20,9 +20,6 @@ package com.android.dialer.searchfragment.directories; import android.content.Context; import android.content.CursorLoader; import android.database.Cursor; -import android.net.Uri; -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; @@ -51,7 +48,13 @@ public final class DirectoriesCursorLoader extends CursorLoader { private static final int PHOTO_SUPPORT = 2; public DirectoriesCursorLoader(Context context) { - super(context, getContentUri(), PROJECTION, null, null, ContactsContract.Directory._ID); + super( + context, + ContactsContract.Directory.ENTERPRISE_CONTENT_URI, + PROJECTION, + null, + null, + ContactsContract.Directory._ID); } @Override @@ -88,12 +91,6 @@ public final class DirectoriesCursorLoader extends CursorLoader { return directories; } - private static Uri getContentUri() { - return VERSION.SDK_INT >= VERSION_CODES.N - ? ContactsContract.Directory.ENTERPRISE_CONTENT_URI - : ContactsContract.Directory.CONTENT_URI; - } - /** POJO representing the results returned from {@link DirectoriesCursorLoader}. */ @AutoValue public abstract static class Directory { diff --git a/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java index fbb662ce9..29127ffce 100644 --- a/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java +++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java @@ -29,7 +29,7 @@ import android.view.View; import android.widget.ImageView; import android.widget.QuickContactBadge; import android.widget.TextView; -import com.android.dialer.common.cp2.DirectoryCompat; +import com.android.dialer.common.cp2.DirectoryUtils; import com.android.dialer.contactphoto.ContactPhotoManager; import com.android.dialer.lettertile.LetterTileDrawable; import com.android.dialer.searchfragment.common.Projections; @@ -80,7 +80,7 @@ public final class DirectoryContactViewHolder extends RecyclerView.ViewHolder nameView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name, context)); numberView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, secondaryInfo, context)); workBadge.setVisibility( - DirectoryCompat.isOnlyEnterpriseDirectoryId(cursor.getDirectoryId()) + DirectoryUtils.isLocalEnterpriseDirectoryId(cursor.getDirectoryId()) ? View.VISIBLE : View.GONE); diff --git a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java index 0c1ad8318..b081de09c 100644 --- a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java +++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java @@ -23,7 +23,7 @@ import android.database.MergeCursor; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import com.android.dialer.common.Assert; -import com.android.dialer.common.cp2.DirectoryCompat; +import com.android.dialer.common.cp2.DirectoryUtils; import com.android.dialer.searchfragment.common.SearchCursor; import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory; import java.util.ArrayList; @@ -101,7 +101,7 @@ public final class DirectoryContactsCursor extends MergeCursor implements Search private static MatrixCursor createHeaderCursor(Context context, String name, long id) { MatrixCursor headerCursor = new MatrixCursor(PROJECTION, 1); - if (DirectoryCompat.isOnlyEnterpriseDirectoryId(id)) { + if (DirectoryUtils.isLocalEnterpriseDirectoryId(id)) { headerCursor.addRow( new Object[] {context.getString(R.string.directory_search_label_work), id}); } else { diff --git a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java index d719cb9d9..bf56a1c18 100644 --- a/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java +++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java @@ -21,13 +21,11 @@ import android.content.CursorLoader; import android.database.Cursor; import android.database.MatrixCursor; import android.net.Uri; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.support.annotation.NonNull; import android.support.annotation.VisibleForTesting; -import com.android.dialer.common.cp2.DirectoryCompat; +import com.android.dialer.common.cp2.DirectoryUtils; import com.android.dialer.searchfragment.common.Projections; import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory; import java.util.ArrayList; @@ -71,14 +69,14 @@ public final class DirectoryContactsCursorLoader extends CursorLoader { for (int i = 0; i < directories.size(); i++) { Directory directory = directories.get(i); - if (!DirectoryCompat.isRemoteDirectoryId(directory.getId()) - && !DirectoryCompat.isEnterpriseDirectoryId(directory.getId())) { + if (!ContactsContract.Directory.isRemoteDirectoryId(directory.getId()) + && !ContactsContract.Directory.isEnterpriseDirectoryId(directory.getId())) { cursors[i] = null; continue; } // Filter out invisible directories. - if (DirectoryCompat.isInvisibleDirectory(directory.getId())) { + if (DirectoryUtils.isInvisibleDirectoryId(directory.getId())) { cursors[i] = null; continue; } @@ -145,12 +143,7 @@ public final class DirectoryContactsCursorLoader extends CursorLoader { @VisibleForTesting static Uri getContentFilterUri(String query, long directoryId) { - Uri baseUri = - VERSION.SDK_INT >= VERSION_CODES.N - ? ENTERPRISE_CONTENT_FILTER_URI - : Phone.CONTENT_FILTER_URI; - - return baseUri + return ENTERPRISE_CONTENT_FILTER_URI .buildUpon() .appendPath(query) .appendQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY, String.valueOf(directoryId)) diff --git a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java b/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java index 09fdf5cda..f3ce70cfd 100644 --- a/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java +++ b/java/com/android/dialer/strictmode/impl/SystemDialerStrictMode.java @@ -18,6 +18,7 @@ package com.android.dialer.strictmode.impl; import android.app.Application; import android.os.Build; +import android.os.Build.VERSION_CODES; import android.os.Handler; import android.os.Looper; import android.os.StrictMode; @@ -91,7 +92,7 @@ final class SystemDialerStrictMode implements DialerStrictMode { new StrictMode.VmPolicy.Builder(vmPenalties) .detectLeakedClosableObjects() .detectLeakedSqlLiteObjects(); - if (Build.VERSION.SDK_INT >= 26) { + if (Build.VERSION.SDK_INT >= VERSION_CODES.O) { vmPolicyBuilder.detectContentUriWithoutPermission(); // TODO(azlatin): Enable detecting untagged sockets once: a bug is fixed. // vmPolicyBuilder.detectUntaggedSockets(); diff --git a/java/com/android/dialer/util/DialerUtils.java b/java/com/android/dialer/util/DialerUtils.java index 7f7b9da74..49a07334f 100644 --- a/java/com/android/dialer/util/DialerUtils.java +++ b/java/com/android/dialer/util/DialerUtils.java @@ -15,6 +15,7 @@ */ package com.android.dialer.util; +import android.annotation.SuppressLint; import android.app.AlertDialog; import android.content.ActivityNotFoundException; import android.content.Context; @@ -22,8 +23,6 @@ import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.graphics.Point; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.telecom.TelecomManager; import android.telephony.TelephonyManager; @@ -131,12 +130,12 @@ public class DialerUtils { * currently active call over LTE. Regardless of the country or carrier, the radio will drop an * active LTE call if a WPS number is dialed, so this warning is necessary. */ + @SuppressLint("MissingPermission") private static boolean shouldWarnForOutgoingWps(Context context, String number) { if (number != null && number.startsWith(WPS_PREFIX)) { TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class); boolean isOnVolte = - VERSION.SDK_INT >= VERSION_CODES.N - && telephonyManager.getVoiceNetworkType() == TelephonyManager.NETWORK_TYPE_LTE; + telephonyManager.getVoiceNetworkType() == TelephonyManager.NETWORK_TYPE_LTE; boolean hasCurrentActiveCall = telephonyManager.getCallState() == TelephonyManager.CALL_STATE_OFFHOOK; return isOnVolte && hasCurrentActiveCall; diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java b/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java index 9b7b7fd86..4f4dbbbe8 100644 --- a/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java +++ b/java/com/android/dialer/voicemail/listui/error/VoicemailStatus.java @@ -107,16 +107,10 @@ public class VoicemailStatus { } isAirplaneMode = Settings.System.getInt(context.getContentResolver(), Global.AIRPLANE_MODE_ON, 0) != 0; - - if (VERSION.SDK_INT >= VERSION_CODES.N) { - quotaOccupied = - getInt(statusCursor, VoicemailStatusQuery.QUOTA_OCCUPIED_INDEX, Status.QUOTA_UNAVAILABLE); - quotaTotal = - getInt(statusCursor, VoicemailStatusQuery.QUOTA_TOTAL_INDEX, Status.QUOTA_UNAVAILABLE); - } else { - quotaOccupied = Status.QUOTA_UNAVAILABLE; - quotaTotal = Status.QUOTA_UNAVAILABLE; - } + quotaOccupied = + getInt(statusCursor, VoicemailStatusQuery.QUOTA_OCCUPIED_INDEX, Status.QUOTA_UNAVAILABLE); + quotaTotal = + getInt(statusCursor, VoicemailStatusQuery.QUOTA_TOTAL_INDEX, Status.QUOTA_UNAVAILABLE); } private VoicemailStatus(Builder builder) { diff --git a/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java b/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java index 4a6e9f703..8923f7411 100644 --- a/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java +++ b/java/com/android/dialer/voicemailstatus/VoicemailStatusQuery.java @@ -51,28 +51,24 @@ public class VoicemailStatusQuery { @RequiresApi(VERSION_CODES.N_MR1) public static final int SOURCE_TYPE_INDEX = 10; - private static final String[] PROJECTION_M = + @RequiresApi(VERSION_CODES.N) + private static final String[] PROJECTION_N = new String[] { Status.SOURCE_PACKAGE, // 0 Status.SETTINGS_URI, // 1 Status.VOICEMAIL_ACCESS_URI, // 2 Status.CONFIGURATION_STATE, // 3 Status.DATA_CHANNEL_STATE, // 4 - Status.NOTIFICATION_CHANNEL_STATE // 5 + Status.NOTIFICATION_CHANNEL_STATE, // 5 + Status.QUOTA_OCCUPIED, // 6 + Status.QUOTA_TOTAL // 7 }; - @RequiresApi(VERSION_CODES.N) - private static final String[] PROJECTION_N; - @RequiresApi(VERSION_CODES.N_MR1) private static final String[] PROJECTION_NMR1; static { - List projectionList = new ArrayList<>(Arrays.asList(PROJECTION_M)); - projectionList.add(Status.QUOTA_OCCUPIED); // 6 - projectionList.add(Status.QUOTA_TOTAL); // 7 - PROJECTION_N = projectionList.toArray(new String[projectionList.size()]); - + List projectionList = new ArrayList<>(Arrays.asList(PROJECTION_N)); projectionList.add(Status.PHONE_ACCOUNT_COMPONENT_NAME); // 8 projectionList.add(Status.PHONE_ACCOUNT_ID); // 9 projectionList.add(Status.SOURCE_TYPE); // 10 @@ -80,12 +76,6 @@ public class VoicemailStatusQuery { } public static String[] getProjection() { - if (VERSION.SDK_INT >= VERSION_CODES.N_MR1) { - return PROJECTION_NMR1; - } - if (VERSION.SDK_INT >= VERSION_CODES.N) { - return PROJECTION_N; - } - return PROJECTION_M; + return VERSION.SDK_INT >= VERSION_CODES.N_MR1 ? PROJECTION_NMR1 : PROJECTION_N; } } -- cgit v1.2.3