aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristine Chen <christinech@google.com>2013-09-30 17:46:40 -0700
committerChristine Chen <christinech@google.com>2013-10-01 13:50:46 -0700
commita16c2509fa398159988861a3fc8408b493fa445b (patch)
tree2243175903c712316a11708a96e0f2cab78b3f92
parentec987e500405c067a13b66eeaed1516696790dc4 (diff)
downloadContactsProvider-a16c2509fa398159988861a3fc8408b493fa445b.tar.gz
Filtes out legacy number in call logs
Bug: 10966248 Change-Id: I297925f336114d98c1109158e19546e81f03fe90
-rw-r--r--src/com/android/providers/contacts/CallLogProvider.java16
-rw-r--r--src/com/android/providers/contacts/DefaultCallLogInsertionHelper.java12
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() {