在我的应用程序(容器)内启动不同的应用程序

问题描述:

如何在我自己的应用程序中运行不同的应用程序。当我开始活动我想表明它在我的应用程序中,并与来自不同应用程序的活动取代我的容器活动(但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

这是不可能的。

每个应用程序运行在其自己的过程中。但是,如果您在两个应用程序中为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

首先,在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)