onSearchRequested()在Android 4.x +中不再有效?

Sou*_*per 25 android android-4.0-ice-cream-sandwich

我的应用程序拦截搜索按钮以提供与应用程序本身更相关的内容:

  @Override
  public boolean onSearchRequested() {
    if (isOkToSearchWithinTheApp())
      doRelevantOwnSearch();
    return true; 
  }
Run Code Online (Sandbox Code Playgroud)

除了我的新4.1.2手机外,它在所有Android版本上都运行良好(仍然有效):在这款Android 4.x手机上,会调用名为"Google Now"的内容.

这是众所周知的(即记录在案的变更)吗?

如果是这样,有没有其他方法来"拦截"搜索按钮?

更新:我完全按照下面@ daniel_c05的建议完成,但触摸搜索按钮会产生相同的行为:引入Google搜索活动(并暂停我自己的活动,这显然不是所需的行为):

在此输入图像描述

顺便说一下,这个类似问题中接受的答案是不可接受的...那么,有没有其他方法可以"拦截"搜索按钮?

ih8*_*ie8 10

是的,谷歌在引入Jelly Bean(Android 4.1)时劫持了搜索按钮,如果你之前尝试拦截它,则在onKeyDown()中:

...
else if (keyCode == KeyEvent.KEYCODE_SEARCH) {
  return this.onSearchRequested();
}
Run Code Online (Sandbox Code Playgroud)

你会发现它也不起作用.

但也许这种解决方法可以帮助你?

  • 抱歉,您建议的解决方法适用于该用户.我需要**程序化**解决方案.仍在寻找解决方案. (8认同)