summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/searchfragment
diff options
context:
space:
mode:
authorwangqi <wangqi@google.com>2017-11-10 11:51:50 -0800
committerZachary Heidepriem <zachh@google.com>2017-11-11 20:25:00 -0800
commite9f94c74ff76f9673d744ddc357b66def1f37f14 (patch)
tree6e583e3a5661722add00d4e270d96167195239d6 /java/com/android/dialer/searchfragment
parentdc63a40ddaf6a223101c2af8b57ac12ad49428e6 (diff)
Fix bug that "+" is dropped when performing actions in smart dial search.
This is caused by normalizing numbers from dialpad search into search box, while "add new contacts" and "send sms" etc. wouldn't work properly without full number. This change also fix "send sms" in old search fragment. This change includes upstream change from: https://android-review.googlesource.com/#/c/platform/packages/apps/Dialer/+/530377/ Change address format when sending message from smart dial In Android O, send search key number as address to message app. In Android N, send real input number as address to message app. Fixed the issue by reverting to Android N implementation. Affected Area: Send SMS operation from Dialer smart dial search result list. Bug: 68962106 Test: manual PiperOrigin-RevId: 175317850 Change-Id: I96dd576144f93f7502977bfdb4b9e9d9c8f73526
Diffstat (limited to 'java/com/android/dialer/searchfragment')
-rw-r--r--java/com/android/dialer/searchfragment/list/NewSearchFragment.java11
-rw-r--r--java/com/android/dialer/searchfragment/list/SearchAdapter.java12
2 files changed, 19 insertions, 4 deletions
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index e797a0390..8306d37a6 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -112,6 +112,9 @@ public final class NewSearchFragment extends Fragment
private RecyclerView recyclerView;
private SearchAdapter adapter;
private String query;
+ // Raw query number from dialpad, which may contain special character such as "+". This is used
+ // for actions to add contact or send sms.
+ private String rawNumber;
private CallInitiationType.Type callInitiationType = CallInitiationType.Type.UNKNOWN_INITIATION;
private boolean remoteDirectoriesDisabledForTesting;
@@ -138,7 +141,7 @@ public final class NewSearchFragment extends Fragment
LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_search, parent, false);
adapter = new SearchAdapter(getContext(), new SearchCursorManager(), this);
- adapter.setQuery(query);
+ adapter.setQuery(query, rawNumber);
adapter.setSearchActions(getActions());
adapter.setZeroSuggestVisible(getArguments().getBoolean(KEY_SHOW_ZERO_SUGGEST));
emptyContentView = view.findViewById(R.id.empty_view);
@@ -248,11 +251,15 @@ public final class NewSearchFragment extends Fragment
}
}
+ public void setRawNumber(String rawNumber) {
+ this.rawNumber = rawNumber;
+ }
+
public void setQuery(String query, CallInitiationType.Type callInitiationType) {
this.query = query;
this.callInitiationType = callInitiationType;
if (adapter != null) {
- adapter.setQuery(query);
+ adapter.setQuery(query, rawNumber);
adapter.setSearchActions(getActions());
adapter.setZeroSuggestVisible(isRegularSearch());
loadNearbyPlacesCursor();
diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
index cc090ac47..4254baece 100644
--- a/java/com/android/dialer/searchfragment/list/SearchAdapter.java
+++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
@@ -18,6 +18,7 @@ package com.android.dialer.searchfragment.list;
import android.content.Context;
import android.database.Cursor;
+import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
@@ -47,6 +48,9 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
private boolean showZeroSuggest;
private String query;
+ // Raw query number from dialpad, which may contain special character such as "+". This is used
+ // for actions to add contact or send sms.
+ private String rawNumber;
private OnClickListener allowClickListener;
private OnClickListener dismissClickListener;
private RowClickListener rowClickListener;
@@ -127,7 +131,10 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
((HeaderViewHolder) holder).setHeader(header);
} else if (holder instanceof SearchActionViewHolder) {
((SearchActionViewHolder) holder)
- .setAction(searchCursorManager.getSearchAction(position), position, query);
+ .setAction(
+ searchCursorManager.getSearchAction(position),
+ position,
+ TextUtils.isEmpty(rawNumber) ? query : rawNumber);
} else if (holder instanceof LocationPermissionViewHolder) {
// No-op
} else {
@@ -179,8 +186,9 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
showZeroSuggest = visible;
}
- public void setQuery(String query) {
+ public void setQuery(String query, @Nullable String rawNumber) {
this.query = query;
+ this.rawNumber = rawNumber;
if (searchCursorManager.setQuery(query)) {
notifyDataSetChanged();
}