2017-02-09 91 views
0

如何在我自己的應用程序中運行不同的應用程序。當我開始活動我想表明它在我的應用程序中,並與來自不同應用程序的活動取代我的容器活動(但recent tasks還是應顯示爲「容器應用程序」在我的應用程序(容器)內啓動不同的應用程序

PackageManager manager = context.getPackageManager(); 
    Intent   intent = manager.getLaunchIntentForPackage(packageName); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); 
    context.startActivity(intent); 
    context.finishAffinity(); 

這種開放的新任務,我recent tasks標籤。但如何保持在相同的任務?

+0

片段是去這裏的路 –

+0

據我所知,這是不可能的。 – AnixPasBesoin

+0

@AHoneyBustard你可以用碎片解釋你的方法嗎?我想知道這件事。 – AnixPasBesoin

回答

0

這是不可能的。

每個應用程序運行在其自己的過程中。但是,如果您在兩個應用程序中爲android:shareUserIDandroid:process分配了相同的值並使用相同的證書對它們進行簽名,則可以使多個應用程序以相同的過程運行。

Can multiple Android applications share a single process and application context?

https://android.stackexchange.com/questions/42129/why-each-android-application-runs-on-a-different-dalvik-vm-process

1

首先,在Android的 「應用程序」 的概念略是擴展的。

一個應用程序 - 技術上是一個過程 - 可以有多個活動,服務,內容提供者和/或廣播監聽者。如果其中至少有一個正在運行,則應用程序已啓動並正在運行(進程)。

所以,你必須確定的是你想如何「啓動應用程序」。

好吧......這裏就是你可以嘗試一下:

創建行動= MAIN和類別= LAUNCHER 意圖使用context.getPackageManager packageManager.queryIntentActivity當前上下文獲取PackageManager(0)其中意圖有category = LAUNCHER,action = MAIN或packageManager.resolveActivity(,0)以獲得主/發射器的第一個活動 獲取您感興趣的活動信息 從ActivityInfo獲取包名和名稱 最後,創建另一個intent with category = LAUNCHER,action = MAIN,componentName = new ComponentName(packageName,name)and setFlags(Intent.FLAG_ACTIVITY_ NEW_TASK) 最後,context.startActivity(newIntent)

相關問題