summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanesh M <daneshm90@gmail.com>2014-12-23 16:55:06 -0800
committerSteve Kondik <steve@cyngn.com>2015-10-18 14:15:30 -0700
commitc06b9eda86d4ecbe6f5b4fc66931c001101b0d3b (patch)
treeade9ee350022d3a930a9f0e2959d79188ec4a501
parentdd990f3750d41be573c80528848d14960231681d (diff)
downloadandroid_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.mk2
-rw-r--r--src/com/android/ex/chips/BaseRecipientAdapter.java8
-rw-r--r--src/com/android/ex/chips/Queries.java2
-rw-r--r--src/com/android/ex/chips/RecipientAlternatesAdapter.java14
-rw-r--r--src/com/android/ex/chips/RecipientEditTextView.java17
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