Как интегрировать поиск с помощью Google Voice Search?

Я пытаюсь реализовать интеграцию Ok Google Voice Search. Тем не менее, я не могу подключиться к своему приложению, когда говорю "Поиск Android на имя приложения". Вместо этого он просто ищет термин в Интернете.

Вот что я сделал:

  • Создать/res/xml/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">
    </searchable>
    
  • Создайте новую активность

    public class ExposedSearchActivity extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            String search = getIntent().getStringExtra(SearchManager.QUERY);
            Log.wtf("", "q=" + search);
        }
    }
    
  • Прикрепите фильтры намерений к активности, доступной для поиска.

    <activity
        android:name=".search.ExposedSearchActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:screenOrientation="fullSensor">
        <!--Deeplink from google now-->
        <intent-filter>
            <action android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
        <!--Making it searchable-->
        <intent-filter>
            <action android:name="android.intent.action.SEARCH"/>
        </intent-filter>
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable"/>
    </activity>
    
  • Мое тестовое устройство - это Nexus 5, работающий с Lollipop LPX13D с Google Search 4.0.26.1499465.arm

Какие еще шаги я мог бы забыть? Спасибо заранее.

Ответ 1

После многих поисков я нашел ответ в комментарии в Google+ автором сообщения в блоге Яреком Вилкевичем.

Да, приложение должно быть опубликовано в Play Store, чтобы функция для работы. Один из способов помочь отладить ваш конец - вызвать с помощью adb, например: adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION -e запрос foo

Итак, я протестировал эту функцию в приложении, которое уже находится в Play Маркете, и работает безупречно.