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);
これを引き起こす可能性のあるアイデア、またはそれを回避する方法を知っていますか?