2

Android 2.2 で正常に動作する検索可能なアプリがあります。入力するか、音声検索を使用して検索できます。渡すバンドルは、検索結果アクティビティ (キーstartSearchの下) のインテント エクストラで利用できます。SearchManager.APP_DATA

ただし、Android 4.0.4 を実行しているデバイス (HTC と Samsung の 2 つの異なるデバイスを試しました) でこの同じアプリを実行すると、キーボードを使用して検索する場合にのみバンドルが結果アクティビティに渡されます。音声検索を使用すると、欠落しています。バンドルが作成され、 に渡されることを確認しました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検索結果アクティビティで、次のようにバンドルを取得しようとしましたが、null です。

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 に答える