2 votes

Pourquoi le paquet APP_DATA n'est-il pas transmis à l'activité de résultats de recherche sur Android 4 lors de l'utilisation de la recherche vocale ?

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 ?

1voto

SimplyAlexander Points 35

Je pense que ce problème a été corrigé dans les sources Android avec le commit suivant https://github.com/Android/platform_frameworks_base/commit/1bcfe84179417cda57176fe8661a4a749cb843b6

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X