ACTION_WEB_SEARCH仅首次打开正确的搜索查询

时间:2014-05-27 17:45:22

标签: android android-intent android-activity

我有一个应用程序打开ACTION_WEB_SEARCH意图打开搜索应用程序。它第一次工作正常,但如果再次启动活动,搜索参数不会改变。

public static void launchWebSearch(Context context, String query) {
    Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
    intent.putExtra(SearchManager.QUERY, query);
    context.startActivity(intent);
}

以上代码将首次打开带有查询的Google搜索应用。下次调用它时,它仍将打开谷歌搜索应用程序,但查询不会更改,仍然会有旧的搜索结果。

3 个答案:

答案 0 :(得分:1)

我也无法重现你的错误;我怀疑问题可能在您的代码中的其他位置。

只是在黑暗中拍摄,但您可能想尝试在您的意图中添加以下标志:

intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

答案 1 :(得分:1)

我认为唯一可能导致此问题的是处理ACTION_WEB_SEARCH意图的活动的错误实现(例如声明为singleInstancesingleTop而未实施{{1 }})。可能三星设备附带定制版本的搜索应用程序?

我建议您使用onNewIntent()查看PackageManager.queryIntentActivities()是否还有其他匹配项。

答案 2 :(得分:1)

面临同样的问题,

经过一番挖掘后,我发现从“谷歌搜索”中卸载更新解决了这个问题,所以这确实与Google Now(Google Quicksearch,股票版本,完美无缺)有关。

我通过在搜索意图中添加以下标志来修复它:

    Intent search = new Intent(Intent.ACTION_WEB_SEARCH);
    search.putExtra(SearchManager.QUERY, query);
    // In the latest Google Now version, ACTION_WEB_SEARCH is broken when used with FLAG_ACTIVITY_NEW_TASK.
    // Adding FLAG_ACTIVITY_CLEAR_TASK seems to fix the problem.
    search.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    search.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);