2014-06-05 59 views
1

我正在開發一個應用程序,它將處理來自外部應用程序的調用,向用戶請求一些數據並返回一個小結果。我已經嘗試使用意圖和startActivityForResult進行交互。應用程序之間的活動交互

問題是我的應用程序有一個身份驗證過程,如果我使用登錄活動處理呼叫,並且用戶已在我的應用程序中進行身份驗證,則必須關閉登錄活動,打開要求對於數據,我失去了使用setResult將結果返回給外部應用程序的機會。

是否有任何方式將結果發送回調用者應用程序,而不是處理意圖過濾器的活動?

另外我被問到是否有可能在不同的任務上調用我的應用程序,即沒有將我的應用程序的活動作爲調用者應用程序的同一進程的一部分。

回答

2

你可以使用結果轉發來做你想做的。如果ActivityA使用startActivityForResult()調用ActivityB,並且ActivityB需要啓動ActivityC以實際獲取數據,則ActivityB可以使用包含Intent.FLAG_ACTIVITY_FORWARD_RESULTIntent調用startActivity()。當ActivityC完成時,結果直接返回給ActivityA(假設ActivityB也已完成)。這回答了你的問題的第一部分。

在你問題的第二部分,你問

...可以調用上不同的任務我的應用程序,也就是沒有我的應用程序的活動是主叫方的同一進程的一部分應用程序。

您使用了術語「任務」和「過程」,就好像它們是相同的東西。在Android中,它們不是一回事。

  • 「進程」是一個操作系統進程。通常,如果ActivityA和ActivityB不共享相同的操作系統用戶標識(即:它們不是來自同一個包或來自同一應用程序),則這兩個活動將運行在不同的操作系統進程中。

  • 「任務」是一系列活動,可能來自完全不同的應用程序/軟件包,並可能在完全不同的操作系統進程中運行。如果要使用startActivityForResult()以便將數據從一個活動傳回另一個活動,則兩個活動必須在相同的任務中運行,儘管它們不需要在相同的操作系統進程中運行。

+0

首先感謝您的快速回答,並對過程和任務的錯誤感到抱歉,我的意思是運行兩個不同的任務。爲了實現這一點,我正在考慮使用廣播接收器從我的應用程序發送它,完成工作後,並允許調用者處理它。 – Victor

+0

當然,您可以通過使用廣播意圖在活動之間進行溝通。這將適用於不同的任務。但是,使用多任務的用戶導航可能會非常棘手,特別是如果用戶按下HOME按鈕並嘗試返回到應用程序(最近任務列表中將有2個任務),並且用戶可能不知道哪個是正確的一個返回。你只需要牢記這一點。 –

相關問題