В моем приложении Activity A использует startActivityForResult для отправки RecognizerIntent. Можно ли сказать, что он возвращает результаты деятельности B, не возвращаясь через Activity A?Как сделать RecognizerIntent начать разное, если это было начато?
ответ
PendingIntent
s не предназначены для того, чтобы результаты передавались обратно вызывающему абоненту, так что это не так.
Если ActivityB позади ActivityA в backstack, просто сделать это:
ActivityA {
@Override
public void onActivityResult (int requestCode, int resultCode, Intent data) {
setResult(resultCode, data);
finish();
}
}
Это будет проходить в ActivityB любые данные RecognizerIntent
активность отсылается обратно ActivityA.
Если ActivityB отдельная активность, что вы хотите, чтобы начать, когда RecognizerIntent
активность завершена:
ActivityA {
@Override
public void onActivityResult (int requestCode, int resultCode, Intent data) {
Intent intent = new Intent(this, ActivityB.class);
intent.putExtras(data);
startActivity(intent);
}
}
Это начнет ActivityB из ActivityA, передавая данные через как пучок, который можно получить с помощью getIntent().get___Extra(String key)
благодарим вас за то, что вы нашли время, но ваш ответ был именно тем, что я имел в виду (и рабочим кодом), когда я спросил «не возвращаясь через Activity A» – Kay
Использование PendingIntent вы можете нажать на результаты деятельности Б без возврата к A:
в активность А:
Intent activityIntent = new Intent(this, ActivityB.class);
PendingIntent resPendingIntent = PendingIntent.getActivity(this, 0, activityIntent, 0);
Intent speechRecIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
speechRecIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
speechRecIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
speechRecIntent.putExtra(RecognizerIntent.EXTRA_RESULTS_PENDINGINTENT, resPendingIntent);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, speechRecIntent, 0);
try {
pendingIntent.send();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}
Тогда в активности B, вы получите получить результаты в этом OnCreate():
Intent intent = getIntent();
if(intent.hasExtra(RecognizerIntent.EXTRA_RESULTS);
ArrayList<String> speechRecResults = intent.getStringArrayList(RecognizerIntent.EXTRA_RESULTS);
. Я начинаю его без просмотра как startActivity или startActivityForResult? – Kay
Вам не обязательно. Вы вызываете речевой рек. активность, вызвав pendingIntent # send. Я отредактировал свой ответ –
Применение шаблона выше к моему коду приводит к сбою приложения с помощью «com.google.android.wearable.gmsclient.WearableException: sendRpcAsync не удалось: Status {statusCode = неизвестный код состояния: 4000, разрешение = null } «Исключение. – Kay
- 1. Как сказать, если приложение Java было начато WebStart
- 2. Как утверждать, что новое действие было начато
- 3. ExecuteReader: свойство подключения не было начато
- 4. Это было бы трудно сделать?
- 5. Как это сделать, если?
- 6. С чего бы начать, если бы я хотел это сделать?
- 7. Как узнать, что действие было начато данным намерением?
- 8. Автоматический тайм-аут RecognizerIntent
- 9. Проверка того, что действие было начато с FLAG_ACTIVITY_CLEAR_TOP
- 10. Как это сделать, если другое работает?
- 11. Это указатель? (И если да, как это было инициализировано?)
- 12. Если URL = это {// сделать это} else {// сделать это}
- 13. DLLImport Int ** - Как это сделать, если это можно сделать
- 14. Имя было начато с недопустимого символа. Ресурс обработки ошибок
- 15. Android - RecognizerIntent search Контакты
- 16. RecognizerIntent изменить язык по умолчанию
- 17. Пакет «Если в это время было неожиданно»
- 18. «Если предыдущее действие было ... сделать что-то»
- 19. Использовать python в оболочке, как если бы это было awk
- 20. Диалог RecognizerIntent в фоновом режиме
- 21. Run PHP переменные, как это было, если заявление
- 22. Как сделать это, если инструкция работает?
- 23. Call RecognizerIntent из службы
- 24. Как активировать mouseleave, если это было х количество времени?
- 25. JQuery, если метка содержит это ... сделать это
- 26. Kube-ui Не начато
- 27. Android RecognizerIntent просто уничтожить
- 28. Ошибка пакетной отладки ', если это было неожиданно в это время'
- 29. Как сделать обертывание текста вокруг таблицы, как если бы это было изображение
- 30. Как изменить тень перетаскивания после того, как в Android было начато перетаскивание?
Я играл вокруг с PedingIntent, но не могли заставить его работать. – Kay