Этот вопрос возник из-за отсутствия ответов на мой вопрос: запуск активности Android из фонового потока
Из моих усилий по этой проблеме я теперь думаю, что фоновый поток не может выполнить startActivityForResult для пользовательского ввода и получить результаты (например, с помощью onActivityResult). Пожалуйста, подтвердите, что в настоящее время это невозможно с помощью известных средств или советов по обходному пути (или версии Android, где это работает, я пробовал на 4x). Подробная информация о вариантах, которые я исследовал ниже:
Моя основная деятельность запускает фоновый поток через timertask, а затем перемещается в фоновый режим пользователем, запускающим другие приложения. Затем фоновый поток timertask пытается, например:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//takePictureIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
//takePictureIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
//startActivity(takePictureIntent);
}
Если код указан выше с комментарием setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
, камера запускается в фоновом режиме на уровне основного стека действий. Если setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
не закомментирован, камера запускается на переднем плане, однако в основной активности onActivityResult
вызывается сразу после того, как я вызываю startActivityForResult
, не дожидаясь, пока камера сделает снимок.