Abrir búsqueda global como superposición
Estoy escribiendo un lanzador y quiero poder abrir una búsqueda como una superposición en lugar de una pantalla completa en la aplicación de Google.
Hasta ahora solo encontré una forma de abrir la búsqueda en la pantalla completa de Google App como sigue (tomada del código fuente de AOSP Launcher3):
- Barra de estado de superposición en android 4.2.2+
- ¿Es posible tener más de una actividad de lanzador?
- agregar el widget a la pantalla de inicio de forma programática en android
- La aplicación de inicio y la clave de inicio no son consistentes
- Icono de lanzador de Android demasiado pequeño
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; } }
Sé que es posible porque otros lanzadores como Nova y Action Launcher lograron hacerlo …
- Cómo agregar una vista personalizada en el JellyBean Launcher de android
- Aplicaciones de las aplicaciones recientes volver a lanzador de acciones en lugar de lanzador personalizado
- Android inicia actividad incorrecta
- Android - ¿Cómo empezar a crear una aplicación de lanzamiento?
- ¿Cómo cambiar el icono y la etiqueta de una aplicación una vez que se instala?
- Widget de Android que parece exactamente un icono de lanzador
- Omitir correctamente la actividad de inicio de sesión si ya ha iniciado sesión
- ¿Cómo abrir el mensaje de inicio predeterminado del lanzador?
Lo averigué
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; } }
- ¿Qué tipo de aplicaciones de Android son las más difíciles de soportar (preocupación de fragmentación)
- Modificación del código fuente del emulador de Android