如何在当前应用程序下启动Android应用程序?

时间:2014-04-17 12:08:05

标签: android android-intent background android-activity

我有两个Android应用程序通过BroadcastReceiver相互通信。但是如果没有启动第二个接收器应用程序,那么第一个应用程序就位于那里......第二个应用程序一旦启动,就需要无限期地继续运行,但不会通过弹出它来中断第一个应用程序。所以我需要一种方法来启动第一个应用程序,但屏幕必须继续显示第一个应用程序。

通过第一个应用程序,我检查是否存在第二个应用程序,如果找到并且没有运行,我启动应用程序:

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

但是这会将第二个应用程序带到第一个应用程序的屏幕上。所以我需要一个以太的解决方案

1)在第一个开始第二个申请

或者

2)将当前的第一个应用程序立即放在第二个应用程序的顶部

这里最好的解决方案是什么,以及如何做到这一点?

2 个答案:

答案 0 :(得分:0)

我假设你的第二个应用程序有一个在后台运行的服务,当你执行startActivity(SecondApp)时;使用intent传递一些参数,并在第二个应用程序中读取此参数,并在启动服务后调用完成(如果该参数存在)。

答案 1 :(得分:0)

谢谢你们的帮助。令人惊讶的是,命令finish()确实获得了UI的外观,但并没有杀死应用程序。

当我从头开始通过第一个应用程序启动它时,仍然只有“最小化”它的问题,并且在所有其他情况下正常运行第二个应用程序。所以我在第一个应用程序意图中添加了一个布尔标志:

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);也有效,但以后会引起故障。这样我个人启动了第二个应用程序两次,或者在使应用程序只有一个实例时导致介绍对话框无法显示。