2

我有一个在 Android 2.2 上运行良好的可搜索应用程序。我可以通过键入或使用语音搜索进行搜索,并且我传递给的包startSearch在搜索结果活动的意图附加项中可用(在SearchManager.APP_DATA键下)。

但是,当在运行 Android 4.0.4 的设备上运行相同的应用程序时(我尝试了两种不同的设备 - 一种 HTC 和一种三星),该捆绑包仅在使用键盘搜索时传递给结果活动。使用语音搜索它丢失了。我已确认正在创建捆绑包并将其传递给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);

任何想法可能导致此问题或知道如何解决它?

4

1 回答 1

1

我相信这个问题已经通过以下提交在 android 源代码中得到修复https://github.com/android/platform_frameworks_base/commit/1bcfe84179417cda57176fe8661a4a749cb843b6

于 2013-03-13T14:54:07.890 回答