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

Commit d0b154af authored by guanxiongliu's avatar guanxiongliu
Browse files

Checking number existence before dedupe

Fix the crash for the case when sip number exists but phone number doesn't
before pruning duplicates.

Bug:28750748
Change-Id: Ic0b7ecf41d2a2331ed36b49adc9c284683bcbe29
parent 44819eb1
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -52,17 +52,17 @@ public class CallLogInteractionsLoader extends AsyncTaskLoader<List<ContactInter

    @Override
    public List<ContactInteraction> loadInBackground() {
        final boolean isPhoneNumbersEmpty = mPhoneNumbers == null || mPhoneNumbers.length <= 0;
        final boolean isSipNumbersEmpty = mSipNumbers == null || mSipNumbers.length <= 0;
        final boolean hasPhoneNumber = mPhoneNumbers != null && mPhoneNumbers.length > 0;
        final boolean hasSipNumber = mSipNumbers != null && mSipNumbers.length > 0;
        if (!PermissionsUtil.hasPhonePermissions(getContext())
                || !getContext().getPackageManager()
                        .hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
                || (isPhoneNumbersEmpty && isSipNumbersEmpty) || mMaxToRetrieve <= 0) {
                || (!hasPhoneNumber && !hasSipNumber) || mMaxToRetrieve <= 0) {
            return Collections.emptyList();
        }

        final List<ContactInteraction> interactions = new ArrayList<>();
        if (!isPhoneNumbersEmpty) {
        if (hasPhoneNumber) {
            for (String number : mPhoneNumbers) {
                final String normalizedNumber = PhoneNumberUtilsCompat.normalizeNumber(number);
                if (!TextUtils.isEmpty(normalizedNumber)) {
@@ -70,7 +70,7 @@ public class CallLogInteractionsLoader extends AsyncTaskLoader<List<ContactInter
                }
            }
        }
        if (!isSipNumbersEmpty) {
        if (hasSipNumber) {
            for (String number : mSipNumbers) {
                interactions.addAll(getCallLogInteractions(number));
            }
@@ -90,7 +90,8 @@ public class CallLogInteractionsLoader extends AsyncTaskLoader<List<ContactInter
            }
        });
        // Duplicates only occur because of fuzzy matching. No need to dedupe a single number.
        if (mPhoneNumbers.length == 1) {
        if ((hasPhoneNumber && mPhoneNumbers.length == 1 && !hasSipNumber)
                || (hasSipNumber && mSipNumbers.length == 1 && !hasPhoneNumber)) {
            return interactions;
        }
        return pruneDuplicateCallLogInteractions(interactions, mMaxToRetrieve);