2014-04-17 58 views
0

我有兩個Android應用程序通過BroadcastReceiver互相通信。但是,如果第二個接收器應用程序沒有啓動,第一個應用程序就在那裏......第二個應用程序一旦啓動,就需要無限期地繼續運行,但不會通過彈出它來中斷第一個應用程序。所以我需要一種方法來通過第一個應用程序啓動第二個應用程序,但屏幕必須繼續顯示第一個應用程序。如何在當前應用程序下啓動Android應用程序?

通過第一個應用程序,我檢查了第二個應用程序的存在,如果它的發現,並沒有運行,我啓動應用程序:

Intent SecondApp = getPackageManager().getLaunchIntentForPackage("com.example.app2"); 
startActivity(SecondApp); 

但這ontop的帶來了第二個應用程序屏幕的第一個。所以我需要一個解決方案,以乙醚

1)拳下啓動第二個應用程序一個

或者

2)立即一個把當前的第一應用的第二應用

什麼是頂部這裏最好的解決方案,以及如何做到這一點?

回答

0

謝謝你們的幫助。令人驚訝的命令finish()確實得到了用戶界面的外觀,但不殺死應用程序。

當我從頭開始通過第一個應用程序開始時,仍然存在「最小化」問題,並且在所有其他情況下正常運行第二個應用程序。所以我增加了一個布爾標誌,第一個應用程序的意圖:

Intent SecondApp = getPackageManager().getLaunchIntentForPackage("com.example.app2"); 
SecondApp.putExtra("StartMinimized",true); 
startActivity(SecondApp); 

在第二個應用程序的onCreate我把這個代碼:

Intent glob_intent = getIntent(); 
boolean startmini = glob_intent.getBooleanExtra("StartMinimized",false); 
glob_intent.putExtra("StartMinimized",false); 
if(startmini) 
{ 
    finish(); 
    Toast.makeText(this,"L",Toast.LENGTH_LONG).show(); //Inform that app started 
} 

啓動第一個應用程序時現在,第二個應用程序只閃爍了白色屏幕一會兒。我覺得這很好。

我發現用finish();代替super.moveTaskToBack(true);也可以,但是會在稍後造成干擾。通過這種方式,我親自啓動了第二個應用程序兩次,或者導致在僅將應用程序設置爲一個實例時不顯示介紹對話框。

0

我假設你的第二個應用程序有一個服務在後臺運行,當你執行startActivity(SecondApp);用意圖傳遞一些參數,並在第二個應用程序中讀取此參數,並在啓動服務後調用finish(如果該參數存在)。

+0

我想在作業完成後強迫它結束,是實現它的一種方法。但這對我來說不起作用,因爲可能有多個「第一」應用程序,所以第二個應用程序將啓動並繼續運行。 – Greg

+0

但是,如果您的服務在後臺運行,第二個應用將繼續在後臺運行,finish()將關閉用戶界面。 – Karthik

+0

謝謝,這有幫助。我很驚訝稱爲FINISH的方法實際上並沒有殺死應用程序。 – Greg

相關問題