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

时间:2017-02-09 11:39:54

标签: android android-intent containers

如何在我自己的应用程序中运行不同的应用程序。当我开始活动时,我想在我的应用程序中显示它并用来自不同应用程序的活动替换我的容器活动(但是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标签中的这个新任务。但是如何保持同样的任务?

2 个答案:

答案 0 :(得分:1)

首先,Android中“应用程序”的概念略有扩展。

应用程序 - 从技术上讲是一个过程 - 可以有多个活动,服务,内容提供者和/或广播听众。如果其中至少有一个正在运行,则应用程序已启动并正在运行(该过程)。

所以,你需要确定的是你想如何“启动应用程序”。

好的......这是你可以试试的:

使用action = MAIN和category = LAUNCHER创建一个intent 使用context.getPackageManager从当前上下文中获取PackageManager packageManager.queryIntentActivity(,0)其中intent具有category = LAUNCHER,action = MAIN或packageManager.resolveActivity(,0)以获取main / launcher的第一个活动 获取您感兴趣的活动信息 从ActivityInfo中获取packageName和name 最后,使用category = LAUNCHER,action = MAIN,componentName = new ComponentName(packageName,name)和setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)创建另一个intent。 最后,context.startActivity(newIntent)

答案 1 :(得分: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