2013-07-17 23 views
0

我整合两个不同的APK,其逻辑很简单:的Android调用其他APK并获得返回结果

应用程序A调用应用B传递量 应用B接收请求 如果应用B的“活动”活动目前在(主)活性ç 设定量 允许用户处理 一次完成的量处理返回一个交易号到App甲 否则 返回RESULT_CANCELED到App甲

鉴于这种我肯定能可以通过st。致电应用程序B artActivityForResult,但是:

  1. 当应用程序被放在Activity D中时,(主)Activity C启动时,App B中会发生什么?如何检测我在Activity D的中间,以便失败并返回RESULT_CANCELED?
  2. 在正常的处理过程中,我希望将返回结果的事务编号给调用者,我试过在setResult中传递一个额外的Intent,但是这个意图总是以null返回给AppA。

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

回答

1

如果在同一任务中调用活动和被叫活动都运行,则只能使用startActivityForResult()。否则startActivityForResult()将立即致电onActivityResult()RESULT_CANCELED

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

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

相关问题