Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 385cda45 authored by Brandon Maxwell's avatar Brandon Maxwell
Browse files

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
parent aae114c1
Loading
Loading
Loading
Loading
+23 −8
Original line number Diff line number Diff line
@@ -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()]);
    }

+11 −5
Original line number Diff line number Diff line
@@ -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);
            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;
+12 −0
Original line number Diff line number Diff line
@@ -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