从另一个应用程序启动应用程序,或者如果它已在运行,则恢复它

时间:2015-12-01 01:28:10

标签: android android-intent

假设我有2个申请,A和B.

我正在使用PackageManager从A启动B.但是,如果B没有运行,我希望流程恢复到任何页面,如果B已经在运行,那么启动B的新实例。可以实现这种流程,或者它将始终启动应用程序的新实例。

2 个答案:

答案 0 :(得分:1)

使用此:

//Get package manager
PackageManager manager = getPackageManager();

//Get intent for application
Intent i = manager.getLaunchIntentForPackage("com.package.application");
i.addCategory(Intent.CATEGORY_LAUNCHER);

//Start new application
startActivity(i);

它将尝试运行应用程序的启动器,如果它已经运行,它将会恢复。

答案 1 :(得分:0)

根据我的经验,PackageManager#getLaunchIntentForPackage(String)产生一个始终开始新任务的意图,从不提升现有任务。如果您看到同样的事情,请改为:

public static Intent newLauncherIntent(final Context context) {
    final Intent intent = new Intent(context, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setAction(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    return intent;
}

尽管设置了Intent.FLAG_ACTIVITY_NEW_TASK,但这会引发任何现有任务。