如何通过Intent启动GoogleNow并添加搜索查询?

时间:2014-03-06 16:54:21

标签: android android-intent google-now

我想通过Intent启动GoogleNow,并添加一个搜索查询作为额外的(putExtra()),应该在GoogleNow搜索引擎中执行。

直到现在我才使用:

Intent intent = new Intent(Intent.ACTION_ASSIST);       
startActivity(intent);

这只会导致GoogleNow打开 - 但我该如何添加搜索字符串?

2 个答案:

答案 0 :(得分:2)

所以这些都不是官方的,但您可以通过以下查询启动Google即时:

    final Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
    intent.setPackage("com.google.android.googlequicksearchbox");
    intent.putExtra(SearchManager.QUERY, "Your query");
    startActivity(intent);

答案 1 :(得分:2)

根据Launcher3源代码,我发现启动器的功能与我下面的代码类似,可以打开Goog​​le搜索:

public static boolean openSearch(Context context) {

        android.app.SearchManager searchManager = (android.app.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", getPackageName());

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

    }

这也有打开最近搜索历史的优势。