2013-07-17 39 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個應用程序在不同的任務中運行,那麼您需要使用其他機制(廣播意圖,後臺服務,共享文件或類似的東西)在它們之間進行通信。

相關問題