Начать деятельность с поиска Google или голосового ввода

Задача: сделать что-то в моем приложении по команде от android wear watch, произнося команду. Это так же, как отправить команду из поиска Google (путем устной или письменной команды).

Инструкции описаны на http://developer.android.com/training/wearables/apps/voice.html "Объявить голосовые действия, предоставляемые приложением"

Я создал два вида деятельности:

    <activity
        android:name=".MainActivity"
        android:label="speech test main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".SomeAction"
        android:label="speech test action" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Оба действия могут быть запущены из поиска Google с помощью команды "start [android: ярлык для действия]". Тогда я могу сделать соответствующее действие в onResume().

Но на системной панели запуска иконка создается для каждого вида деятельности! Я попытался изменить категорию на ПО УМОЛЧАНИЮ, значок исчезает, но активность не может быть запущена из поиска Google. Похоже, что поиск Google может начать действия только с категорией LAUNCHER.

Таким образом, нужно начать деятельность (или просто отправить намерение, если это возможно) из поиска Google. Проблема - лишние иконки на лаунчере.

1 ответ

Вы не можете использовать <action android:name="android.intent.action.LAUNCHER" /> дважды, потому что это дало бы 2 иконки запуска. Кроме того, удалить <category android:name="android.intent.category.DEFAULT" /> от обоих видов деятельности. Вместо этого просто сосредоточьтесь на том, чтобы иметь только один основной вид запуска, где getIntent() вызывается, затем при необходимости повторно отправьте все намерения / дополнительные данные / флаги / другие данные, которые пришли с намерением, в ваше второе действие. В качестве альтернативы обработайте намерение в основном действии средства запуска, а затем вызовите другой метод во втором действии.

Другие вопросы по тегам