应用之间的活动互动

时间:2014-06-05 18:12:15

标签: android android-intent

我正在开发一个应用程序来处理来自外部应用程序的调用,向用户请求一些数据并返回一个小结果。我已经尝试使用intents和startActivityForResult进行交互。

问题是我的应用程序有一个身份验证过程,如果我使用Login活动处理呼叫,并且用户已经在我的应用程序中进行了身份验证,我将必须关闭Login活动,打开要求的Activity数据并且我没有机会使用setResult将结果返回到外部应用程序。

有没有办法将结果从处理意图过滤器的活动以外的活动发送回来电应用?

我还被问到是否可以在不同的任务上调用我的应用程序,即我的应用程序的活动不属于调用者应用程序的同一过程。

1 个答案:

答案 0 :(得分:2)

您可以使用结果转发来执行您想要的操作。如果ActivityA使用startActivityForResult()调用ActivityB,并且ActivityB需要启动ActivityC以实际获取数据,则ActivityB可以使用包含startActivity()的{​​{1}}来调用Intent。当ActivityC完成时,结果将直接返回到ActivityA(假设ActivityB也已完成)。这回答了你问题的第一部分。

在问题的第二部分,您要求

  

...可以在不同的任务上调用我的应用程序,即我的应用程序的活动不属于调用者应用程序的同一进程。

您使用术语“任务”和“处理”就好像它们是相同的东西。在Android中,它们不是一回事。

  • “进程”是一个操作系统进程。通常,如果ActivityA和ActivityB不共享相同的操作系统用户标识(即:它们不是来自同一个软件包,或来自同一个应用程序),则这2个活动将在不同的操作系统进程中运行。

  • “任务”是一系列活动,可能来自完全不同的应用程序/包,可能在完全不同的操作系统进程中运行。如果您想使用Intent.FLAG_ACTIVITY_FORWARD_RESULT将数据从一个活动传递回另一个活动,则2个活动必须在同一个任务中运行,尽管它们不需要在同一个操作中运行系统流程。