diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java index 3e426f5af78b1..bf9b021eaceda 100644 --- a/core/java/android/app/SearchDialog.java +++ b/core/java/android/app/SearchDialog.java @@ -668,7 +668,10 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS // The user changed the query, remember it. mUserQuery = s == null ? "" : s.toString(); } - updateVoiceButton(mSearchAutoComplete.isEmpty()); + // Always want to show the microphone if the context is voice. + updateVoiceButton(mSearchAutoComplete.isEmpty() + || (mAppSearchData != null && mAppSearchData.getBoolean( + SearchManager.CONTEXT_IS_VOICE))); } public void afterTextChanged(Editable s) { diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java index 0ed572a77d569..625b12072428f 100644 --- a/core/java/android/app/SearchManager.java +++ b/core/java/android/app/SearchManager.java @@ -1543,6 +1543,15 @@ public class SearchManager */ public final static String INTENT_ACTION_NONE = "android.search.action.ZILCH"; + /** + * This means that context is voice, and therefore the SearchDialog should + * continue showing the microphone until the user indicates that he/she does + * not want to re-speak (e.g. by typing). + * + * @hide + */ + public final static String CONTEXT_IS_VOICE = "android.search.CONTEXT_IS_VOICE"; + /** * Reference to the shared system search service. */