J'ai une application de recherche qui fonctionne bien sous Android 2.2. Je peux effectuer une recherche soit en tapant, soit en utilisant la recherche vocale et le paquet que je passe à startSearch
est disponible dans les extras d'intention dans l'activité de résultats de recherche (sous l'onglet SearchManager.APP_DATA
).
Cependant, lorsque j'exécute cette même application sur un appareil fonctionnant sous Android 4.0.4 (j'ai essayé deux appareils différents - un HTC et un Samsung), le faisceau n'est transmis à l'activité de résultats que lorsque la recherche est effectuée à l'aide du clavier. En utilisant la recherche vocale, il est absent. J'ai confirmé que le paquet est créé et transmis à l'activité de résultats. startSearch
. Il disparaît à un moment donné après ça.
Pour ce que ça vaut, c'est mon 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>
Et c'est là que j'invoque 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;
}
Sur onCreate
dans l'activité de résultats de recherche, je tente de récupérer le paquet comme suit mais il est nul :
Bundle data = getIntent().getBundleExtra(SearchManager.APP_DATA);
Avez-vous une idée de ce qui pourrait causer ce problème ou savez-vous comment le contourner ?