为什么在使用语音搜索时,APP_DATAbundle没有传递给Android 4上的搜索结果活动



我有一个可搜索的应用程序,在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

最新更新