summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon Maxwell <maxwelb@google.com>2015-11-30 18:02:11 -0800
committerBrandon Maxwell <maxwelb@google.com>2015-12-01 11:39:24 -0800
commit385cda4523c396e49f1ef3acc04107147bcecde6 (patch)
tree0c883a3bb7be589d14359fe736795e7bdfb71b91
parentaae114c17fd97055522e7d8e77759cd09f869e8b (diff)
Compatibility code for Calls.CACHED_PHOTO_URI
Only if the current sdk version is at least M, do we look up the CACHED_PHOTO_URI Bug: 25776171 Change-Id: I79ac81abb4da719ffdb5476476a9a28c287c95f6
-rw-r--r--src/com/android/dialer/calllog/CallLogQuery.java31
-rw-r--r--src/com/android/dialer/calllog/ContactInfoHelper.java16
-rw-r--r--src/com/android/dialer/compat/DialerCompatUtils.java12
3 files changed, 46 insertions, 13 deletions
diff --git a/src/com/android/dialer/calllog/CallLogQuery.java b/src/com/android/dialer/calllog/CallLogQuery.java
index 3f798010e..905a4b789 100644
--- a/src/com/android/dialer/calllog/CallLogQuery.java
+++ b/src/com/android/dialer/calllog/CallLogQuery.java
@@ -18,10 +18,12 @@ package com.android.dialer.calllog;
import android.provider.CallLog.Calls;
+import com.android.dialer.compat.DialerCompatUtils;
import com.android.dialer.util.AppCompatConstants;
-import java.util.ArrayList;
-import java.util.Arrays;
+import com.google.common.collect.Lists;
+
+import java.util.List;
/**
* The query for the call log table.
@@ -52,7 +54,6 @@ public final class CallLogQuery {
Calls.FEATURES, // 20
Calls.DATA_USAGE, // 21
Calls.TRANSCRIPTION, // 22
- Calls.CACHED_PHOTO_URI // 23
};
public static final int ID = 0;
@@ -78,18 +79,32 @@ public final class CallLogQuery {
public static final int FEATURES = 20;
public static final int DATA_USAGE = 21;
public static final int TRANSCRIPTION = 22;
- public static final int CACHED_PHOTO_URI = 23;
- public static final int POST_DIAL_DIGITS = 24;
+
+ // Indices for columns that may not be available, depending on the Sdk Version
+ /**
+ * Only available in versions >= M
+ * Call {@link DialerCompatUtils#isCallsCachedPhotoUriCompatible()} prior to use
+ */
+ public static int CACHED_PHOTO_URI = -1;
+
+ /**
+ * Only available in versions > M
+ * Call {@link PhoneNumberDisplayUtil#canShowPostDial()} prior to use
+ */
+ public static int POST_DIAL_DIGITS = -1;
public static final String[] _PROJECTION;
static {
- ArrayList<String> projectionList = new ArrayList<String>();
- projectionList.addAll(Arrays.asList(_PROJECTION_INTERNAL));
+ List<String> projectionList = Lists.newArrayList(_PROJECTION_INTERNAL);
+ if (DialerCompatUtils.isCallsCachedPhotoUriCompatible()) {
+ projectionList.add(Calls.CACHED_PHOTO_URI);
+ CACHED_PHOTO_URI = projectionList.size() - 1;
+ }
if (PhoneNumberDisplayUtil.canShowPostDial()) {
projectionList.add(AppCompatConstants.POST_DIAL_DIGITS);
+ POST_DIAL_DIGITS = projectionList.size() - 1;
}
- projectionList.trimToSize();
_PROJECTION = projectionList.toArray(new String[projectionList.size()]);
}
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index 5b6c52b64..3e4f70f4e 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -33,6 +33,7 @@ import com.android.contacts.common.util.Constants;
import com.android.contacts.common.util.PermissionsUtil;
import com.android.contacts.common.util.PhoneNumberHelper;
import com.android.contacts.common.util.UriUtils;
+import com.android.dialer.compat.DialerCompatUtils;
import com.android.dialer.service.CachedNumberLookupService;
import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
import com.android.dialer.util.TelecomUtil;
@@ -335,7 +336,8 @@ public class ContactInfoHelper {
final Uri updatedPhotoUriContactsOnly =
UriUtils.nullForNonContactsUri(updatedInfo.photoUri);
- if (!UriUtils.areEqual(updatedPhotoUriContactsOnly, callLogInfo.photoUri)) {
+ if (DialerCompatUtils.isCallsCachedPhotoUriCompatible() &&
+ !UriUtils.areEqual(updatedPhotoUriContactsOnly, callLogInfo.photoUri)) {
values.put(Calls.CACHED_PHOTO_URI,
UriUtils.uriToString(updatedPhotoUriContactsOnly));
needsUpdate = true;
@@ -354,8 +356,10 @@ public class ContactInfoHelper {
values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
- values.put(Calls.CACHED_PHOTO_URI, UriUtils.uriToString(
- UriUtils.nullForNonContactsUri(updatedInfo.photoUri)));
+ if (DialerCompatUtils.isCallsCachedPhotoUriCompatible()) {
+ values.put(Calls.CACHED_PHOTO_URI, UriUtils.uriToString(
+ UriUtils.nullForNonContactsUri(updatedInfo.photoUri)));
+ }
values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
needsUpdate = true;
}
@@ -412,8 +416,10 @@ public class ContactInfoHelper {
info.normalizedNumber = c.getString(CallLogQuery.CACHED_NORMALIZED_NUMBER);
info.photoId = c.getLong(CallLogQuery.CACHED_PHOTO_ID);
- info.photoUri = UriUtils.nullForNonContactsUri(
- UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_PHOTO_URI)));
+ info.photoUri = DialerCompatUtils.isCallsCachedPhotoUriCompatible() ?
+ UriUtils.nullForNonContactsUri(
+ UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_PHOTO_URI)))
+ : null;
info.formattedNumber = c.getString(CallLogQuery.CACHED_FORMATTED_NUMBER);
return info;
diff --git a/src/com/android/dialer/compat/DialerCompatUtils.java b/src/com/android/dialer/compat/DialerCompatUtils.java
index cda51c691..07a279aa4 100644
--- a/src/com/android/dialer/compat/DialerCompatUtils.java
+++ b/src/com/android/dialer/compat/DialerCompatUtils.java
@@ -41,4 +41,16 @@ public final class DialerCompatUtils {
return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP)
>= Build.VERSION_CODES.M;
}
+
+ /**
+ * Determines if this version has access to the
+ * {@link android.provider.CallLog.Calls.CACHED_PHOTO_URI} column
+ *
+ * @return {@code true} if {@link android.provider.CallLog.Calls.CACHED_PHOTO_URI} is available,
+ * {@code false} otherwise
+ */
+ public static boolean isCallsCachedPhotoUriCompatible() {
+ return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M)
+ >= Build.VERSION_CODES.M;
+ }
} \ No newline at end of file