diff options
| author | Danesh M <daneshm90@gmail.com> | 2014-12-23 16:55:06 -0800 |
|---|---|---|
| committer | Steve Kondik <steve@cyngn.com> | 2015-10-18 14:15:30 -0700 |
| commit | c06b9eda86d4ecbe6f5b4fc66931c001101b0d3b (patch) | |
| tree | ade9ee350022d3a930a9f0e2959d79188ec4a501 | |
| parent | dd990f3750d41be573c80528848d14960231681d (diff) | |
| download | android_frameworks_opt_chips-c06b9eda86d4ecbe6f5b4fc66931c001101b0d3b.tar.gz android_frameworks_opt_chips-c06b9eda86d4ecbe6f5b4fc66931c001101b0d3b.tar.bz2 android_frameworks_opt_chips-c06b9eda86d4ecbe6f5b4fc66931c001101b0d3b.zip | |
Chips : Fix recipient list picked contact
When picking a contact from the recipient list,
and entered via append() its treated as a EMAIL.
This patch differentiates items if query type is PHONE.
Change-Id: Ie9674e8b7bd3213ed7d8243938df4e8dc5f51c3e
| -rw-r--r-- | sample/Android.mk | 2 | ||||
| -rw-r--r-- | src/com/android/ex/chips/BaseRecipientAdapter.java | 8 | ||||
| -rw-r--r-- | src/com/android/ex/chips/Queries.java | 2 | ||||
| -rw-r--r-- | src/com/android/ex/chips/RecipientAlternatesAdapter.java | 14 | ||||
| -rw-r--r-- | src/com/android/ex/chips/RecipientEditTextView.java | 17 |
5 files changed, 33 insertions, 10 deletions
diff --git a/sample/Android.mk b/sample/Android.mk index d58e4b5..658e6ae 100644 --- a/sample/Android.mk +++ b/sample/Android.mk @@ -27,7 +27,7 @@ LOCAL_PACKAGE_NAME := libChipsSample LOCAL_STATIC_JAVA_LIBRARIES += libchips -LOCAL_SDK_VERSION := 18 +LOCAL_SDK_VERSION := 21 LOCAL_SRC_FILES := $(call all-java-files-under, src) \ $(call all-logtags-files-under, $(src_dirs)) diff --git a/src/com/android/ex/chips/BaseRecipientAdapter.java b/src/com/android/ex/chips/BaseRecipientAdapter.java index 070f7ad..abcd1f4 100644 --- a/src/com/android/ex/chips/BaseRecipientAdapter.java +++ b/src/com/android/ex/chips/BaseRecipientAdapter.java @@ -603,7 +603,13 @@ public class BaseRecipientAdapter extends BaseAdapter implements Filterable, Acc public void getMatchingRecipients(ArrayList<String> inAddresses, RecipientAlternatesAdapter.RecipientMatchCallback callback) { RecipientAlternatesAdapter.getMatchingRecipients( - getContext(), this, inAddresses, getAccount(), callback); + getContext(), this, inAddresses, + isPhoneQuery() ? QUERY_TYPE_PHONE : QUERY_TYPE_EMAIL, + getAccount(), callback); + } + + protected boolean isPhoneQuery() { + return getQueryType() == BaseRecipientAdapter.QUERY_TYPE_PHONE; } /** diff --git a/src/com/android/ex/chips/Queries.java b/src/com/android/ex/chips/Queries.java index 1e66b96..3d22815 100644 --- a/src/com/android/ex/chips/Queries.java +++ b/src/com/android/ex/chips/Queries.java @@ -30,7 +30,7 @@ import android.provider.ContactsContract.Contacts; public static final Query PHONE = new Query(new String[] { Contacts.DISPLAY_NAME, // 0 - Phone.NUMBER, // 1 + Phone.NORMALIZED_NUMBER, // 1 Phone.TYPE, // 2 Phone.LABEL, // 3 Phone.CONTACT_ID, // 4 diff --git a/src/com/android/ex/chips/RecipientAlternatesAdapter.java b/src/com/android/ex/chips/RecipientAlternatesAdapter.java index 9fce9a6..92e8546 100644 --- a/src/com/android/ex/chips/RecipientAlternatesAdapter.java +++ b/src/com/android/ex/chips/RecipientAlternatesAdapter.java @@ -25,6 +25,7 @@ import android.graphics.drawable.StateListDrawable; import android.net.Uri; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; +import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.text.util.Rfc822Token; import android.text.util.Rfc822Tokenizer; @@ -42,6 +43,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; @@ -104,8 +106,16 @@ public class RecipientAlternatesAdapter extends CursorAdapter { StringBuilder bindString = new StringBuilder(); // Create the "?" string and set up arguments. for (int i = 0; i < addressesSize; i++) { - Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(inAddresses.get(i).toLowerCase()); - addresses.add(tokens.length > 0 ? tokens[0].getAddress() : inAddresses.get(i)); + if (addressType == QUERY_TYPE_EMAIL) { + Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(inAddresses.get(i).toLowerCase()); + addresses.add(tokens.length > 0 ? tokens[0].getAddress() : inAddresses.get(i)); + } else { + String number = PhoneNumberUtils.formatNumberToE164(inAddresses.get(i), + Locale.getDefault().getCountry()); + if (number != null) { + addresses.add(number); + } + } bindString.append("?"); if (i < addressesSize - 1) { bindString.append(","); diff --git a/src/com/android/ex/chips/RecipientEditTextView.java b/src/com/android/ex/chips/RecipientEditTextView.java index 0cd3270..e33625f 100644 --- a/src/com/android/ex/chips/RecipientEditTextView.java +++ b/src/com/android/ex/chips/RecipientEditTextView.java @@ -49,6 +49,7 @@ import android.os.Looper; import android.os.Message; import android.os.Parcelable; import android.support.annotation.NonNull; +import android.telephony.PhoneNumberUtils; import android.text.Editable; import android.text.InputType; import android.text.Layout; @@ -103,6 +104,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; @@ -1310,12 +1312,17 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements return mValidator == null ? true : mValidator.isValid(text); } - private static String tokenizeAddress(String destination) { - Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(destination); - if (tokens != null && tokens.length > 0) { - return tokens[0].getAddress(); + private String tokenizeAddress(String destination) { + if (getAdapter().isPhoneQuery() && isPhoneNumber(destination)) { + return PhoneNumberUtils.formatNumberToE164(destination, + Locale.getDefault().getCountry()); + } else { + Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(destination); + if (tokens != null && tokens.length > 0) { + return tokens[0].getAddress(); + } + return destination; } - return destination; } @Override |
