1

我正在集成两个不同的 APK,它们的逻辑非常简单:

应用程序 A 调用应用程序 B 传递金额 应用程序 B 接收请求 如果应用程序 B 的“活动”活动当前在(主)活动 C 中设置金额,允许用户在处理完成后处理金额 将交易编号返回给应用程序 A 否则返回应用 A 的 RESULT_CANCELED

鉴于此,我当然可以通过 startActivityForResult 调用 App B,但是:

  1. 当应用程序留在活动 D 中时启动(主)活动 C 时,应用程序 B 会发生什么?我如何检测到我处于活动 D 的中间以便失败并返回 RESULT_CANCELED?
  2. 在正常处理中,我想将生成的事务编号返回给调用者,我尝试在 setResult 中传递一个带有额外内容的 Intent,但该意图始终作为 null 返回给 App A。

有人有一个简单的例子吗?

4

1 回答 1

1

startActivityForResult()当调用活动和被调用活动都在同一任务中运行时才能使用。否则startActivityForResult()会立即调用onActivityResult()with RESULT_CANCELED

鉴于上述前提,如果 App A 使用 启动 App B startActivityForResult(),这将始终创建 App B 的主要活动的新实例,因此 App B 不可能处于任何其他状态。

如果这 2 个应用程序在不同的任务中运行,那么您将需要使用其他机制(广播意图、后台服务、共享文件或类似的东西)在它们之间进行通信。

于 2013-07-18T13:16:20.633 回答