启动活动意图 - 如果正在运行或忽略意图则将其带到前面

时间:2016-02-12 09:33:23

标签: android android-intent start-activity

我想将另一个应用程序带到前面,如果它已经运行,否则我不想做任何事情。

通常我会启动其他应用程序,如下所示:

ComponentName compName = new ComponentName(packageName, activityName);
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
i.setComponent(compName);
context.startActivity(i);

如果我删除Intent.FLAG_ACTIVITY_NEW_TASK,则调用将抛出一个异常,指示不允许在非活动上下文中没有此标志的情况下启动活动...

我能以其他方式做我想做的事吗?

1 个答案:

答案 0 :(得分:0)

首先检查应用程序是否处于运行状态。

 ActivityManager am = (ActivityManager) mContext
            .getSystemService(Activity.ACTIVITY_SERVICE);
    String packageName = am.getRunningTasks(1).get(0).topActivity
            .getPackageName();

这将返回在后台运行的活动的包名称。如果所需的包名称正在运行,则调用intent orelse不执行任何操作。

相关问题