Начать деятельность с поиска 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()
вызывается, затем при необходимости повторно отправьте все намерения / дополнительные данные / флаги / другие данные, которые пришли с намерением, в ваше второе действие. В качестве альтернативы обработайте намерение в основном действии средства запуска, а затем вызовите другой метод во втором действии.