android调用另一个apk并获得返回结果

时间:2013-07-17 19:38:24

标签: android android-intent android-activity

我正在整合两个不同的APK,其逻辑非常简单:

App A调用App B传递金额 应用B收到请求 如果App B的“活动”活动当前在(主要)活动C中     设定金额     允许用户处理金额     一旦完成处理,就向App A返回一个交易号 其他     将RESULT_CANCELED返回给App A

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

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

1 个答案:

答案 0 :(得分:1)

如果调用活动和被叫活动在同一任务中运行,则只能使用startActivityForResult() 。否则,startActivityForResult()会立即通过onActivityResult()生成RESULT_CANCELED

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

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