2014-04-17 29 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

相关问题