summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/contacts/common/list/PhoneNumberListAdapter.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
index 3ff3e1bc..053b7699 100644
--- a/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
+++ b/src/com/android/contacts/common/list/PhoneNumberListAdapter.java
@@ -29,6 +29,7 @@ import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Directory;
import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
@@ -100,6 +101,9 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter {
public static final int PHOTO_URI = 8;
}
+ private static final String IGNORE_NUMBER_TOO_LONG_CLAUSE =
+ "length(" + Phone.NUMBER + ") < 1000";
+
private final CharSequence mUnknownNameText;
private final String mCountryIso;
@@ -176,6 +180,17 @@ public class PhoneNumberListAdapter extends ContactEntryListAdapter {
applyFilter(loader, builder, directoryId, getFilter());
}
+ // Ignore invalid phone numbers that are too long. These can potentially cause freezes
+ // in the UI and there is no reason to display them.
+ final String prevSelection = loader.getSelection();
+ final String newSelection;
+ if (!TextUtils.isEmpty(prevSelection)) {
+ newSelection = prevSelection + " AND " + IGNORE_NUMBER_TOO_LONG_CLAUSE;
+ } else {
+ newSelection = IGNORE_NUMBER_TOO_LONG_CLAUSE;
+ }
+ loader.setSelection(newSelection);
+
// Remove duplicates when it is possible.
builder.appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "true");
loader.setUri(builder.build());