Open global search as overlay

I am writing a launcher and want to be able to open the search as an overlay, rather than a full screen in a Google application.

So far, I have found a way to open the search in full-screen Google App as follows (taken from the AOSP Launcher3 source code):

public static boolean openSearch(Context context) { SearchManager searchManager = (SearchManager) context.getSystemService(Context.SEARCH_SERVICE); ComponentName globalSearchActivity = searchManager.getGlobalSearchActivity(); if (globalSearchActivity == null) { Timber.w("No global search activity found."); return false; } Intent intent = new Intent(android.app.SearchManager.INTENT_ACTION_GLOBAL_SEARCH); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(globalSearchActivity); Bundle appSearchData = new Bundle(); appSearchData.putString("source", "launcher-search"); intent.putExtra(android.app.SearchManager.APP_DATA, appSearchData); intent.putExtra(android.app.SearchManager.QUERY, ""); intent.putExtra(android.app.SearchManager.EXTRA_SELECT_QUERY, true); try { context.startActivity(intent); return true; } catch (ActivityNotFoundException ex) { Timber.w("Global search activity not found: %s", globalSearchActivity); return false; } } 

I know this is possible because other launchers, such as Nova and Action Launcher, managed to do this ...

+6
source share
1 answer

Figured it out ...

 public static boolean showGlobalSearchOverlay(Context context) { ComponentName globalSearchActivity = new ComponentName("com.google.android.googlequicksearchbox", "com.google.android.apps.gsa.queryentry.QueryEntryActivity"); Intent intent = new Intent(Intent.ACTION_MAIN); intent.setComponent(globalSearchActivity); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { context.startActivity(intent); return true; } catch (Throwable e) { Timber.w("Unable to show search overlay"); return false; } } 
+4
source

All Articles