diff options
author | Christine Chen <christinech@google.com> | 2013-09-30 17:46:40 -0700 |
---|---|---|
committer | Christine Chen <christinech@google.com> | 2013-10-01 13:50:46 -0700 |
commit | a16c2509fa398159988861a3fc8408b493fa445b (patch) | |
tree | 2243175903c712316a11708a96e0f2cab78b3f92 | |
parent | ec987e500405c067a13b66eeaed1516696790dc4 (diff) | |
download | ContactsProvider-a16c2509fa398159988861a3fc8408b493fa445b.tar.gz |
Filtes out legacy number in call logs
Bug: 10966248
Change-Id: I297925f336114d98c1109158e19546e81f03fe90
-rw-r--r-- | src/com/android/providers/contacts/CallLogProvider.java | 16 | ||||
-rw-r--r-- | src/com/android/providers/contacts/DefaultCallLogInsertionHelper.java | 12 |
2 files changed, 24 insertions, 4 deletions
diff --git a/src/com/android/providers/contacts/CallLogProvider.java b/src/com/android/providers/contacts/CallLogProvider.java index e2b9ccef..cb661642 100644 --- a/src/com/android/providers/contacts/CallLogProvider.java +++ b/src/com/android/providers/contacts/CallLogProvider.java @@ -33,6 +33,7 @@ import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.provider.CallLog; import android.provider.CallLog.Calls; +import android.text.TextUtils; import android.util.Log; import com.android.providers.contacts.ContactsDatabaseHelper.Tables; @@ -40,6 +41,7 @@ import com.android.providers.contacts.util.SelectionBuilder; import com.google.common.annotations.VisibleForTesting; import java.util.HashMap; +import java.util.List; /** * Call log content provider. @@ -146,10 +148,16 @@ public class CallLogProvider extends ContentProvider { } case CALLS_FILTER: { - String phoneNumber = uri.getPathSegments().get(2); - qb.appendWhere("PHONE_NUMBERS_EQUAL(number, "); - qb.appendWhereEscapeString(phoneNumber); - qb.appendWhere(mUseStrictPhoneNumberComparation ? ", 1)" : ", 0)"); + List<String> pathSegments = uri.getPathSegments(); + String phoneNumber = pathSegments.size() >= 2 ? pathSegments.get(2) : null; + if (!TextUtils.isEmpty(phoneNumber)) { + qb.appendWhere("PHONE_NUMBERS_EQUAL(number, "); + qb.appendWhereEscapeString(phoneNumber); + qb.appendWhere(mUseStrictPhoneNumberComparation ? ", 1)" : ", 0)"); + } else { + qb.appendWhere(Calls.NUMBER_PRESENTATION + "!=" + + Calls.PRESENTATION_ALLOWED); + } break; } diff --git a/src/com/android/providers/contacts/DefaultCallLogInsertionHelper.java b/src/com/android/providers/contacts/DefaultCallLogInsertionHelper.java index fcda8f1c..9e901977 100644 --- a/src/com/android/providers/contacts/DefaultCallLogInsertionHelper.java +++ b/src/com/android/providers/contacts/DefaultCallLogInsertionHelper.java @@ -25,18 +25,24 @@ import com.android.i18n.phonenumbers.PhoneNumberUtil; import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber; import com.android.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder; +import com.google.android.collect.Sets; + import java.util.Locale; +import java.util.Set; /** * Default implementation of {@link CallLogInsertionHelper}. * <p> * It added the country ISO abbreviation and the geocoded location. + * It checks for legacy unknown numbers and updates number presentation. * <p> * It uses {@link PhoneNumberOfflineGeocoder} to compute the geocoded location of a phone number. */ /*package*/ class DefaultCallLogInsertionHelper implements CallLogInsertionHelper { private static DefaultCallLogInsertionHelper sInstance; + private static final Set<String> LEGACY_UNKNOWN_NUMBERS = Sets.newHashSet("-1", "-2", "-3"); + private final CountryMonitor mCountryMonitor; private PhoneNumberUtil mPhoneNumberUtil; private PhoneNumberOfflineGeocoder mPhoneNumberOfflineGeocoder; @@ -62,6 +68,12 @@ import java.util.Locale; // Insert the geocoded location, so that we do not need to compute it on the fly. values.put(Calls.GEOCODED_LOCATION, getGeocodedLocationFor(values.getAsString(Calls.NUMBER), countryIso)); + + final String number = values.getAsString(Calls.NUMBER); + if (LEGACY_UNKNOWN_NUMBERS.contains(number)) { + values.put(Calls.NUMBER_PRESENTATION, Calls.PRESENTATION_UNKNOWN); + values.put(Calls.NUMBER, ""); + } } private String getCurrentCountryIso() { |