Как я могу получить результат CameraActivities в ДРУГОМ действии (т. е.не в стартовом)?

StackOverflow https://stackoverflow.com/questions/2435050

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть действие A, которое запускает намерение камеры с помощью:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CAMERA);

После того, как снимок сделан, я могу легко захватить его в:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)

Но я бы хотел получить результат в упражнении B, в котором изображение можно редактировать.Прямо сейчас я получаю результат в действии A и передаю его в действие B, что приводит к отображению графического интерфейса действия A на короткое время:

Intent i = new Intent().setAction("DisplayJPEG");
i.setClass(this, EditImageActivity.class);
i.putExtra("IMAGE_URI", uri);
startActivityForResult(i, REQUEST_EDIT_IMAGE);

Конечно, мне понадобится результат действия B в действии A после того, как изображение будет отредактировано.Но это должно сработать с:

setResult(resultCode, data);

Так что должен быть способ сделать то, что мне нужно.Пожалуйста, укажи мне правильное направление.

Это было полезно?

Решение

Вы пробовали запускать ActivityB, а в событии ActivityB onCreate запускать намерение камеры?

Другие советы

Технически вы не можете сделать то, о чем просите.Вам нужно будет найти способ продолжать передавать его таким, какой вы есть, и скрыть пользовательский интерфейс или поступить так, как говорит Pentium, и сделать это наоборот.

Редактировать:Неважно, я неправильно понял, как это работает.Что на самом деле происходит, так это то, что вы можете использовать Activity A для запуска Activity B для получения результата, но затем, если Activity B необходимо запустить Activity C для продолжения обработки любого желаемого Activity A, вы можете использовать FLAG_ACTIVITY_FORWARD_RESULT, чтобы заставить Activity C возвращать свой результат Activity A, а не B.


Я изучал это не более чем беглым взглядом, но я заметил флаг намерения с именем FLAG_ACTIVITY_FORWARD_RESULT, который, согласно документации:

If set and this intent is being used to launch a new activity from an existing one, then the reply target of the existing activity will be transfered to the new activity. This way the new activity can call setResult(int) and have that result sent back to the reply target of the original activity.

Как я уже сказал, я не экспериментировал с этим, но, похоже, это наводит на мысль, что вы могли бы запустить намерение камеры из действия A, но перенаправить результат в действие B.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top