diff options
-rw-r--r-- | src/com/android/contacts/common/list/PhoneNumberListAdapter.java | 15 |
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()); |