我有一个可搜索的应用程序,在Android 2.2上运行良好。我可以通过键入或使用语音搜索进行搜索,并且我传递给startSearch
的捆绑包在搜索结果活动中的意向附加中可用(在SearchManager.APP_DATA
键下)。
然而,当在运行Android 4.0.4的设备上运行相同的应用程序时(我尝试过两种不同的设备,一种是HTC,另一种是Samsung),只有在使用键盘搜索时,捆绑包才会传递给结果活动。使用语音搜索,它不见了。我已经确认捆绑包正在创建并传递给startSearch
。在那之后的某个时刻它就不见了。
值得一提的是,这是我的searchable.xml
:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search_hint"
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
android:voiceLanguageModel="web_search"
android:voiceLanguage="en">
</searchable>
这就是我调用startSearch
:的地方
@Override
public boolean onSearchRequested()
{
Bundle data = new Bundle();
data.putParcelable(URI_EXTRA, getIntent().getParcelableExtra(URI_EXTRA));
data.putString(NAME_EXTRA, getIntent().getStringExtra(NAME_EXTRA));
startSearch(null, false, data, false);
return true;
}
在搜索结果活动的onCreate
中,我尝试按如下方式检索捆绑包,但它为空:
Bundle data = getIntent().getBundleExtra(SearchManager.APP_DATA);
有什么想法可能导致这种情况,或者知道如何解决它吗?
我相信这个问题已经通过以下提交在android源代码中得到了修复https://github.com/android/platform_frameworks_base/commit/1bcfe84179417cda57176fe8661a4a749cb843b6