【问题标题】:How can I receive CameraActivities result in a DIFFERENT Activity (i.e. not in the launching one)?如何接收导致不同活动的 CameraActivities(即不在启动活动中)?
【发布时间】:2010-03-12 18:56:00
【问题描述】:

我有 Activity A,它通过以下方式启动相机意图:

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

拍照后我可以很容易的把图片抓进去:

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

但我希望在可以编辑图像的活动 B 中收到结果。 现在,我在 Activity A 中收到结果并将其传递给 Activity B,这会导致在短时间内显示 Activity A 的 GUI:

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

当然,在图像编辑完成后,我需要 Activity A 中的 Activity B 的结果。但这应该适用于:

setResult(resultCode, data);

所以必须有一种方法来做我需要的事情。请为我指明正确的方向。

【问题讨论】:

    标签: android camera android-intent


    【解决方案1】:

    您是否尝试过启动 ActivityB,并在 ActivityB 的 onCreate 事件中启动 Camera Intent?

    【讨论】:

    • 不,我还没有尝试过。看起来像一个丑陋的解决方案。但我从你们那里了解到,这似乎是唯一的解决方案。从来没有看到过……谢谢大家
    • 如果您控制活动 B,这听起来像是要走的路。让您意图启动活动 B,然后让活动 B 打开相机,处理图像并将其发送回活动 A结果。
    • 这在其他语言中类似于在构造函数中启动 ShowModal。希望这可以帮助。我经常使用它。
    • 你是对的,在 ActivityB onCreate 中启动相机意图就可以了。由于我们在 onCreate 中,因此没有绘制 ActivityB 的 UI,因此您只需启动相机应用程序,捕获其结果,通过 setResult(Intent i) 存储它并完成 ActivityB。不错
    【解决方案2】:

    从技术上讲,您无法按照您的要求进行操作。您需要找到一种方法来继续以您的方式传递它并隐藏 UI,或者按照 Pentium 所说的方式进行操作。

    【讨论】:

      【解决方案3】:

      编辑:没关系,我误读了它的工作原理。实际发生的情况是您可以使用 Activity A 启动 Activity B 以获得结果,但是如果 Activity B 需要启动 Activity C 以继续处理 Activity A 想要的任何内容,您可以使用 FLAG_ACTIVITY_FORWARD_RESULT 使 Activity C 将其结果返回给 Activity A 而不是 B .


      我只是快速浏览了一下,但我注意到一个名为 FLAG_ACTIVITY_FORWARD_RESULT 的 Intent 标志,根据文档:

      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.

      就像我说的,我没有对此进行过实验,但这似乎表明您可以从 Activity A 启动相机 Intent,但将其结果转发给 Activity B。

      【讨论】:

      • 我认为这不会起作用,因为您无法影响内置相机应用程序创建的意图。
      • 是的,这就是我对我的评论进行编辑的意思——我意识到这行不通。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2011-02-14
      • 1970-01-01
      • 2016-09-30
      相关资源
      最近更新 更多