Как я могу получить результат CameraActivities в РАЗНОМ действии (то есть не в запускающем)? - PullRequest
2 голосов
/ 12 марта 2010

У меня есть активность 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, в результате чего на короткое время отображается GUI для Деятельности 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);

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

Ответы [ 3 ]

2 голосов
/ 15 марта 2010

Вы пытались запустить ActivityB, а в событии ActivityB onCreate запустить Camera Intent?

1 голос
/ 16 марта 2010

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


Я не смотрел на это более чем на беглый взгляд, но заметил флаг Intent, названный 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.

1 голос
/ 16 марта 2010

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

...