to top
Android APIs
public class

SearchManager

extends Object
implements DialogInterface.OnCancelListener DialogInterface.OnDismissListener
java.lang.Object
   ↳ android.app.SearchManager

Class Overview

This class provides access to the system search services.

In practice, you won't interact with this class directly, as search services are provided through methods in Activity and the ACTION_SEARCH Intent. If you do require direct access to the SearchManager, do not instantiate this class directly. Instead, retrieve it through context.getSystemService(Context.SEARCH_SERVICE).

Developer Guides

For more information about using the search dialog and adding search suggestions in your application, read the Search developer guide.

Summary

Nested Classes
interface SearchManager.OnCancelListener See setOnCancelListener(SearchManager.OnCancelListener) for configuring your activity to monitor search UI state. 
interface SearchManager.OnDismissListener See setOnDismissListener(SearchManager.OnDismissListener) for configuring your activity to monitor search UI state. 
Constants
String ACTION_KEY Intent extra data key: Use this key with Intent.ACTION_SEARCH and content.Intent.getIntExtra() to obtain the keycode that the user used to trigger this query.
String ACTION_MSG Intent extra data key: Use this key with Intent.ACTION_SEARCH and content.Intent.getStringExtra() to obtain the action message that was defined for a particular search action key and/or suggestion.
String APP_DATA Intent extra data key: Use this key with Intent.ACTION_SEARCH and content.Intent.getBundleExtra() to obtain any additional app-specific data that was inserted by the activity that launched the search.
String CURSOR_EXTRA_KEY_IN_PROGRESS Boolean extra data key for a suggestion provider to return in getExtras() to indicate that the search is not complete yet.
String EXTRA_DATA_KEY Intent extra data key: This key will be used for the extra populated by the SUGGEST_COLUMN_INTENT_EXTRA_DATA column.
String EXTRA_NEW_SEARCH Boolean extra data key for ACTION_WEB_SEARCH intents.
String EXTRA_SELECT_QUERY Boolean extra data key for INTENT_ACTION_GLOBAL_SEARCH intents.
String EXTRA_WEB_SEARCH_PENDINGINTENT Extra data key for ACTION_WEB_SEARCH.
int FLAG_QUERY_REFINEMENT Flag to specify that the entry can be used for query refinement, i.e., the query text in the search field can be replaced with the text in this entry, when a query refinement icon is clicked.
String INTENT_ACTION_GLOBAL_SEARCH Intent action for starting the global search activity.
String INTENT_ACTION_SEARCHABLES_CHANGED Intent action broadcasted to inform that the searchables list or default have changed.
String INTENT_ACTION_SEARCH_SETTINGS Intent action for starting the global search settings activity.
String INTENT_ACTION_SEARCH_SETTINGS_CHANGED Intent action broadcasted to inform that the search settings have changed in some way.
String INTENT_ACTION_WEB_SEARCH_SETTINGS Intent action for starting a web search provider's settings activity.
String INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED Intent action to be broadcast to inform that the global search provider has changed.
char MENU_KEY This is a shortcut definition for the default menu key to use for invoking search.
int MENU_KEYCODE This is a shortcut definition for the default menu key to use for invoking search.
String QUERY Intent extra data key: Use this key with content.Intent.getStringExtra() to obtain the query string from Intent.ACTION_SEARCH.
String SHORTCUT_MIME_TYPE MIME type for shortcut validation.
String SUGGEST_COLUMN_FLAGS Column name for suggestions cursor.
String SUGGEST_COLUMN_FORMAT Column name for suggestions cursor.
String SUGGEST_COLUMN_ICON_1 Column name for suggestions cursor.
String SUGGEST_COLUMN_ICON_2 Column name for suggestions cursor.
String SUGGEST_COLUMN_INTENT_ACTION Column name for suggestions cursor.
String SUGGEST_COLUMN_INTENT_DATA Column name for suggestions cursor.
String SUGGEST_COLUMN_INTENT_DATA_ID Column name for suggestions cursor.
String SUGGEST_COLUMN_INTENT_EXTRA_DATA Column name for suggestions cursor.
String SUGGEST_COLUMN_LAST_ACCESS_HINT Column name for suggestions cursor.
String SUGGEST_COLUMN_QUERY Column name for suggestions cursor.
String SUGGEST_COLUMN_SHORTCUT_ID Column name for suggestions cursor.
String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING Column name for suggestions cursor.
String SUGGEST_COLUMN_TEXT_1 Column name for suggestions cursor.
String SUGGEST_COLUMN_TEXT_2 Column name for suggestions cursor.
String SUGGEST_COLUMN_TEXT_2_URL Column name for suggestions cursor.
String SUGGEST_MIME_TYPE MIME type for suggestions data.
String SUGGEST_NEVER_MAKE_SHORTCUT Column value for suggestion column SUGGEST_COLUMN_SHORTCUT_ID when a suggestion should not be stored as a shortcut in global search.
String SUGGEST_PARAMETER_LIMIT Query parameter added to suggestion queries to limit the number of suggestions returned.
String SUGGEST_URI_PATH_QUERY Uri path for queried suggestions data.
String SUGGEST_URI_PATH_SHORTCUT Uri path for shortcut validation.
String USER_QUERY Intent extra data key: Use this key with content.Intent.getStringExtra() to obtain the query string typed in by the user.
Public Methods
ComponentName getGlobalSearchActivity()
Gets the name of the global search activity.
SearchableInfo getSearchableInfo(ComponentName componentName)
Gets information about a searchable activity.
List<SearchableInfo> getSearchablesInGlobalSearch()
Returns a list of the searchable activities that can be included in global search.
void onCancel(DialogInterface dialog)
This method is deprecated. This method is an obsolete internal implementation detail. Do not use.
void onDismiss(DialogInterface dialog)
This method is deprecated. This method is an obsolete internal implementation detail. Do not use.
void setOnCancelListener(SearchManager.OnCancelListener listener)
Set or clear the callback that will be invoked whenever the search UI is canceled.
void setOnDismissListener(SearchManager.OnDismissListener listener)
Set or clear the callback that will be invoked whenever the search UI is dismissed.
void startSearch(String initialQuery, boolean selectInitialQuery, ComponentName launchActivity, Bundle appSearchData, boolean globalSearch)
Launch search UI.
void stopSearch()
Terminate search UI.
void triggerSearch(String query, ComponentName launchActivity, Bundle appSearchData)
Similar to startSearch(String, boolean, ComponentName, Bundle, boolean) but actually fires off the search query after invoking the search dialog.
[Expand]
Inherited Methods
From class java.lang.Object
From interface android.content.DialogInterface.OnCancelListener
From interface android.content.DialogInterface.OnDismissListener

Constants

public static final String ACTION_KEY

Since: API Level 1

Intent extra data key: Use this key with Intent.ACTION_SEARCH and content.Intent.getIntExtra() to obtain the keycode that the user used to trigger this query. It will be zero if the user simply pressed the "GO" button on the search UI. This is primarily used in conjunction with the keycode attribute in the actionkey element of your searchable.xml configuration file.

Constant Value: "action_key"

public static final String ACTION_MSG

Since: API Level 1

Intent extra data key: Use this key with Intent.ACTION_SEARCH and content.Intent.getStringExtra() to obtain the action message that was defined for a particular search action key and/or suggestion. It will be null if the search was launched by typing "enter", touched the the "GO" button, or other means not involving any action key.

Constant Value: "action_msg"

public static final String APP_DATA

Since: API Level 1

Intent extra data key: Use this key with Intent.ACTION_SEARCH and content.Intent.getBundleExtra() to obtain any additional app-specific data that was inserted by the activity that launched the search.

Constant Value: "app_data"

public static final String CURSOR_EXTRA_KEY_IN_PROGRESS

Since: API Level 8

Boolean extra data key for a suggestion provider to return in getExtras() to indicate that the search is not complete yet. This can be used by the search UI to indicate that a search is in progress. The suggestion provider can return partial results this way and send a change notification on the cursor when more results are available.

Constant Value: "in_progress"

public static final String EXTRA_DATA_KEY

Since: API Level 4

Intent extra data key: This key will be used for the extra populated by the SUGGEST_COLUMN_INTENT_EXTRA_DATA column.

Constant Value: "intent_extra_data_key"

public static final String EXTRA_NEW_SEARCH

Since: API Level 12

Boolean extra data key for ACTION_WEB_SEARCH intents. If true, this search should open a new browser window, rather than using an existing one.

Constant Value: "new_search"

public static final String EXTRA_SELECT_QUERY

Since: API Level 8

Boolean extra data key for INTENT_ACTION_GLOBAL_SEARCH intents. If true, the initial query should be selected when the global search activity is started, so that the user can easily replace it with another query.

Constant Value: "select_query"

public static final String EXTRA_WEB_SEARCH_PENDINGINTENT

Since: API Level 14

Extra data key for ACTION_WEB_SEARCH. If set, the value must be a PendingIntent. The search activity handling the ACTION_WEB_SEARCH intent will fill in and launch the pending intent. The data URI will be filled in with an http or https URI, and EXTRA_HEADERS may be filled in.

Constant Value: "web_search_pendingintent"

public static final int FLAG_QUERY_REFINEMENT

Since: API Level 11

Flag to specify that the entry can be used for query refinement, i.e., the query text in the search field can be replaced with the text in this entry, when a query refinement icon is clicked. The suggestion list should show such a clickable icon beside the entry.

Use this flag as a bit-field for SUGGEST_COLUMN_FLAGS.

Constant Value: 1 (0x00000001)

public static final String INTENT_ACTION_GLOBAL_SEARCH

Since: API Level 8

Intent action for starting the global search activity. The global search provider should handle this intent. Supported extra data keys: QUERY, EXTRA_SELECT_QUERY, APP_DATA.

Constant Value: "android.search.action.GLOBAL_SEARCH"

public static final String INTENT_ACTION_SEARCHABLES_CHANGED

Since: API Level 4

Intent action broadcasted to inform that the searchables list or default have changed. Components should handle this intent if they cache any searchable data and wish to stay up to date on changes.

Constant Value: "android.search.action.SEARCHABLES_CHANGED"

public static final String INTENT_ACTION_SEARCH_SETTINGS

Since: API Level 8

Intent action for starting the global search settings activity. The global search provider should handle this intent.

Constant Value: "android.search.action.SEARCH_SETTINGS"

public static final String INTENT_ACTION_SEARCH_SETTINGS_CHANGED

Since: API Level 4

Intent action broadcasted to inform that the search settings have changed in some way. Either searchables have been enabled or disabled, or a different web search provider has been chosen.

Constant Value: "android.search.action.SETTINGS_CHANGED"

public static final String INTENT_ACTION_WEB_SEARCH_SETTINGS

Since: API Level 4

Intent action for starting a web search provider's settings activity. Web search providers should handle this intent if they have provider-specific settings to implement.

Constant Value: "android.search.action.WEB_SEARCH_SETTINGS"

public static final String INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED

Since: API Level 16

Intent action to be broadcast to inform that the global search provider has changed.

Constant Value: "android.search.action.GLOBAL_SEARCH_ACTIVITY_CHANGED"

public static final char MENU_KEY

Since: API Level 1

This is a shortcut definition for the default menu key to use for invoking search. See Menu.Item.setAlphabeticShortcut() for more information.

Constant Value: 115 (0x00000073)

public static final int MENU_KEYCODE

Since: API Level 1

This is a shortcut definition for the default menu key to use for invoking search. See Menu.Item.setAlphabeticShortcut() for more information.

Constant Value: 47 (0x0000002f)

public static final String QUERY

Since: API Level 1

Intent extra data key: Use this key with content.Intent.getStringExtra() to obtain the query string from Intent.ACTION_SEARCH.

Constant Value: "query"

public static final String SHORTCUT_MIME_TYPE

Since: API Level 4

MIME type for shortcut validation. You'll use this in your suggestions content provider in the getType() function.

Constant Value: "vnd.android.cursor.item/vnd.android.search.suggest"

public static final String SUGGEST_COLUMN_FLAGS

Since: API Level 11

Column name for suggestions cursor. Optional. This column is used to specify additional flags per item. Multiple flags can be specified.

Must be one of FLAG_QUERY_REFINEMENT or 0 to indicate no flags.

Constant Value: "suggest_flags"

public static final String SUGGEST_COLUMN_FORMAT

Since: API Level 1

Column name for suggestions cursor. Unused - can be null or column can be omitted.

Constant Value: "suggest_format"

public static final String SUGGEST_COLUMN_ICON_1

Since: API Level 1

Column name for suggestions cursor. Optional. If your cursor includes this column, then all suggestions will be provided in a format that includes space for two small icons, one at the left and one at the right of each suggestion. The data in the column must be a resource ID of a drawable, or a URI in one of the following formats:

See openAssetFileDescriptor(Uri, String) for more information on these schemes.

Constant Value: "suggest_icon_1"

public static final String SUGGEST_COLUMN_ICON_2

Since: API Level 1

Column name for suggestions cursor. Optional. If your cursor includes this column, then all suggestions will be provided in a format that includes space for two small icons, one at the left and one at the right of each suggestion. The data in the column must be a resource ID of a drawable, or a URI in one of the following formats:

See openAssetFileDescriptor(Uri, String) for more information on these schemes.

Constant Value: "suggest_icon_2"

public static final String SUGGEST_COLUMN_INTENT_ACTION

Since: API Level 1

Column name for suggestions cursor. Optional. If this column exists and this element exists at the given row, this is the action that will be used when forming the suggestion's intent. If the element is not provided, the action will be taken from the android:searchSuggestIntentAction field in your XML metadata. At least one of these must be present for the suggestion to generate an intent. Note: If your action is the same for all suggestions, it is more efficient to specify it using XML metadata and omit it from the cursor.

Constant Value: "suggest_intent_action"

public static final String SUGGEST_COLUMN_INTENT_DATA

Since: API Level 1

Column name for suggestions cursor. Optional. If this column exists and this element exists at the given row, this is the data that will be used when forming the suggestion's intent. If the element is not provided, the data will be taken from the android:searchSuggestIntentData field in your XML metadata. If neither source is provided, the Intent's data field will be null. Note: If your data is the same for all suggestions, or can be described using a constant part and a specific ID, it is more efficient to specify it using XML metadata and omit it from the cursor.

Constant Value: "suggest_intent_data"

public static final String SUGGEST_COLUMN_INTENT_DATA_ID

Since: API Level 1

Column name for suggestions cursor. Optional. If this column exists and this element exists at the given row, then "/" and this value will be appended to the data field in the Intent. This should only be used if the data field has already been set to an appropriate base string.

Constant Value: "suggest_intent_data_id"

public static final String SUGGEST_COLUMN_INTENT_EXTRA_DATA

Since: API Level 4

Column name for suggestions cursor. Optional. If this column exists and this element exists at the given row, this is the data that will be used when forming the suggestion's intent. If not provided, the Intent's extra data field will be null. This column allows suggestions to provide additional arbitrary data which will be included as an extra under the key EXTRA_DATA_KEY.

Constant Value: "suggest_intent_extra_data"

public static final String SUGGEST_COLUMN_LAST_ACCESS_HINT

Since: API Level 14

Column name for suggestions cursor. Optional. This column may be used to specify the time in System.currentTImeMillis() (wall time in UTC) when an item was last accessed within the results-providing application. If set, this may be used to show more-recently-used items first.

Constant Value: "suggest_last_access_hint"

public static final String SUGGEST_COLUMN_QUERY

Since: API Level 1

Column name for suggestions cursor. Required if action is ACTION_SEARCH, optional otherwise. If this column exists and this element exists at the given row, this is the data that will be used when forming the suggestion's query.

Constant Value: "suggest_intent_query"

public static final String SUGGEST_COLUMN_SHORTCUT_ID

Since: API Level 4

Column name for suggestions cursor. Optional. This column is used to indicate whether a search suggestion should be stored as a shortcut, and whether it should be refreshed. If missing, the result will be stored as a shortcut and never validated. If set to SUGGEST_NEVER_MAKE_SHORTCUT, the result will not be stored as a shortcut. Otherwise, the shortcut id will be used to check back for an up to date suggestion using SUGGEST_URI_PATH_SHORTCUT.

Constant Value: "suggest_shortcut_id"

public static final String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING

Since: API Level 4

Column name for suggestions cursor. Optional. This column is used to specify that a spinner should be shown in lieu of an icon2 while the shortcut of this suggestion is being refreshed.

Constant Value: "suggest_spinner_while_refreshing"

public static final String SUGGEST_COLUMN_TEXT_1

Since: API Level 1

Column name for suggestions cursor. Required. This is the primary line of text that will be presented to the user as the suggestion.

Constant Value: "suggest_text_1"

public static final String SUGGEST_COLUMN_TEXT_2

Since: API Level 1

Column name for suggestions cursor. Optional. If your cursor includes this column, then all suggestions will be provided in a two-line format. The second line of text is in a much smaller appearance.

Constant Value: "suggest_text_2"

public static final String SUGGEST_COLUMN_TEXT_2_URL

Since: API Level 8

Column name for suggestions cursor. Optional. This is a URL that will be shown as the second line of text instead of SUGGEST_COLUMN_TEXT_2. This is a separate column so that the search UI knows to display the text as a URL, e.g. by using a different color. If this column is absent, or has the value null, SUGGEST_COLUMN_TEXT_2 will be used instead.

Constant Value: "suggest_text_2_url"

public static final String SUGGEST_MIME_TYPE

Since: API Level 1

MIME type for suggestions data. You'll use this in your suggestions content provider in the getType() function.

Constant Value: "vnd.android.cursor.dir/vnd.android.search.suggest"

public static final String SUGGEST_NEVER_MAKE_SHORTCUT

Since: API Level 4

Column value for suggestion column SUGGEST_COLUMN_SHORTCUT_ID when a suggestion should not be stored as a shortcut in global search.

Constant Value: "_-1"

public static final String SUGGEST_PARAMETER_LIMIT

Since: API Level 5

Query parameter added to suggestion queries to limit the number of suggestions returned. This limit is only advisory and suggestion providers may chose to ignore it.

Constant Value: "limit"

public static final String SUGGEST_URI_PATH_QUERY

Since: API Level 1

Uri path for queried suggestions data. This is the path that the search manager will use when querying your content provider for suggestions data based on user input (e.g. looking for partial matches). Typically you'll use this with a URI matcher.

Constant Value: "search_suggest_query"

public static final String SUGGEST_URI_PATH_SHORTCUT

Since: API Level 4

Uri path for shortcut validation. This is the path that the search manager will use when querying your content provider to refresh a shortcutted suggestion result and to check if it is still valid. When asked, a source may return an up to date result, or no result. No result indicates the shortcut refers to a no longer valid sugggestion.

Constant Value: "search_suggest_shortcut"

public static final String USER_QUERY

Since: API Level 4

Intent extra data key: Use this key with content.Intent.getStringExtra() to obtain the query string typed in by the user. This may be different from the value of QUERY if the intent is the result of selecting a suggestion. In that case, QUERY will contain the value of SUGGEST_COLUMN_QUERY for the suggestion, and USER_QUERY will contain the string typed by the user.

Constant Value: "user_query"

Public Methods

public ComponentName getGlobalSearchActivity ()

Since: API Level 16

Gets the name of the global search activity.

public SearchableInfo getSearchableInfo (ComponentName componentName)

Since: API Level 8

Gets information about a searchable activity.

Parameters
componentName The activity to get searchable information for.
Returns
  • Searchable information, or null if the activity does not exist, or is not searchable.

public List<SearchableInfo> getSearchablesInGlobalSearch ()

Since: API Level 8

Returns a list of the searchable activities that can be included in global search.

Returns
  • a list containing searchable information for all searchable activities that have the android:includeInGlobalSearch attribute set in their searchable meta-data.

public void onCancel (DialogInterface dialog)

Since: API Level 1

This method is deprecated.
This method is an obsolete internal implementation detail. Do not use.

This method will be invoked when the dialog is canceled.

Parameters
dialog The dialog that was canceled will be passed into the method.

public void onDismiss (DialogInterface dialog)

Since: API Level 1

This method is deprecated.
This method is an obsolete internal implementation detail. Do not use.

This method will be invoked when the dialog is dismissed.

Parameters
dialog The dialog that was dismissed will be passed into the method.

public void setOnCancelListener (SearchManager.OnCancelListener listener)

Since: API Level 1

Set or clear the callback that will be invoked whenever the search UI is canceled.

Parameters
listener The SearchManager.OnCancelListener to use, or null.

public void setOnDismissListener (SearchManager.OnDismissListener listener)

Since: API Level 1

Set or clear the callback that will be invoked whenever the search UI is dismissed.

Parameters
listener The SearchManager.OnDismissListener to use, or null.

public void startSearch (String initialQuery, boolean selectInitialQuery, ComponentName launchActivity, Bundle appSearchData, boolean globalSearch)

Since: API Level 1

Launch search UI.

The search manager will open a search widget in an overlapping window, and the underlying activity may be obscured. The search entry state will remain in effect until one of the following events:

  • The user completes the search. In most cases this will launch a search intent.
  • The user uses the back, home, or other keys to exit the search.
  • The application calls the stopSearch() method, which will hide the search window and return focus to the activity from which it was launched.
  • Most applications will not use this interface to invoke search. The primary method for invoking search is to call Activity.onSearchRequested() or Activity.startSearch().

Parameters
initialQuery A search string can be pre-entered here, but this is typically null or empty.
selectInitialQuery If true, the intial query will be preselected, which means that any further typing will replace it. This is useful for cases where an entire pre-formed query is being inserted. If false, the selection point will be placed at the end of the inserted query. This is useful when the inserted query is text that the user entered, and the user would expect to be able to keep typing. This parameter is only meaningful if initialQuery is a non-empty string.
launchActivity The ComponentName of the activity that has launched this search.
appSearchData An application can insert application-specific context here, in order to improve quality or specificity of its own searches. This data will be returned with SEARCH intent(s). Null if no extra data is required.
globalSearch If false, this will only launch the search that has been specifically defined by the application (which is usually defined as a local search). If no default search is defined in the current application or activity, global search will be launched. If true, this will always launch a platform-global (e.g. web-based) search instead.

public void stopSearch ()

Since: API Level 1

Terminate search UI.

Typically the user will terminate the search UI by launching a search or by canceling. This function allows the underlying application or activity to cancel the search prematurely (for any reason).

This function can be safely called at any time (even if no search is active.)

public void triggerSearch (String query, ComponentName launchActivity, Bundle appSearchData)

Since: API Level 5

Similar to startSearch(String, boolean, ComponentName, Bundle, boolean) but actually fires off the search query after invoking the search dialog. Made available for testing purposes.

Parameters
query The query to trigger. If empty, request will be ignored.
launchActivity The ComponentName of the activity that has launched this search.
appSearchData An application can insert application-specific context here, in order to improve quality or specificity of its own searches. This data will be returned with SEARCH intent(s). Null if no extra data is required.