2016-07-05 9 views
6

Sto scrivendo un programma di avvio e voglio essere in grado di aprire una ricerca come una sovrapposizione piuttosto che a schermo intero nell'app Google.Apri ricerca globale come sovrapposizione

Finora ho trovato solo un modo per aprire la ricerca in Google App a tutto schermo come segue (preso dal codice sorgente AOSP Launcher3):

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; 
     } 

    } 

So che è possibile perché gli altri lanciatori come Nova e Azione Launcher è riuscito a farlo ...

risposta

4

capito ...

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; 
    } 
}