2013-11-21 43 views
0

我有2個不同的應用程序A和B,我想創建一個從B到A的特殊動畫,即在B可見後打開A時。這意味着我需要以某種方式知道之前的應用程序,之後我的應用程序被打開。我可以有從B到A的不同場景 - 使用「最新應用」(多任務)按鈕,使用「後退」按鈕,使用「主頁」按鈕(應用程序A是自定義主屏幕)。有什麼想法如何做到這一點? ActivityManager中的一些函數可能會有所幫助,但他們在文檔中有評論說不使用它們來實現邏輯和控制流。Android:如何知道以前的應用程序

回答

0

我設法弄清楚如何實現這一點,它爲我工作。

我用this answer,但與供給ActivityManager.getRecentTasks()RECENT_WITH_EXCLUDED | RECENT_IGNORE_UNAVAILABLE取代ActivityManager.getRunningTasks(),並從結果的baseIntent構件採取了組件名稱。索引1處的信息是在當前應用程序打開之前運行的信息,與您回到應用程序的方式無關 - 返回按鈕,主頁按鈕,最近按鈕或從另一個應用程序打開。

注:當你的應用程序啓動時,就像在onResume()但因爲新任務尚未加載到行爲管理器(在onPause()調用時)不會當你的應用程序被關閉工作,這工作。所以如果你還需要知道你要去哪個應用程序,那麼它可能會更復雜一些。

NOTE2:儘管文件告知不能使用該API上述任何一種邏輯和控制流的,我看到的多任務/最近的應用程序的代碼是做完全一樣的,所以在我看來,這不應該是因爲他們寫文檔是有風險的。

注意3:不要忘記遵循上面提到的答案中的所有步驟,例如添加所需的權限,否則您將會遇到異常。作爲本系統的一部分,對我來說更容易。

1

不確定這是否適用於不同的應用程序,但getCallingActivity() or getCallingPackage()怎麼樣?

如果這不起作用,當您啓動指示啓動應用程序的意圖時,是否可以傳遞一些'extra' data in the bundle

+0

根據文檔,您的建議僅適用於同一應用中的活動,並且只有在使用[startActivityForResult()](http://developer.android.com/reference/android/app/Activity.html #startActivityForResult(android.content.Intent,%20int))。那不是我的情況。 – frangulyan

相關問題