2

在我的应用程序中,我必须启动另一个应用程序,前提是它尚未启动。

要启动一个应用程序,我要做的是:

PackageManager pm = getPackageManager();        
Intent intent = pm.getLaunchIntentForPackage("package.of.app.to.launch");
startActivity(intent);

我的问题是,如果应用程序已经启动,它将把应用程序带到前面。仅当活动和已启动的应用程序中不存在时,我如何才能启动应用程序?谢谢!

4

4 回答 4

2

您可以获得所有正在运行或活动的应用程序的列表,然后检查您要启动的应用程序是否在其中。

ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningProcInfo = activityManager.getRunningAppProcesses();
for(int i = 0; i < runningProcInfo.size(); i++){
        if(runningProcInfo.get(i).processName.equals("package.of.app.to.launch")) {
            Log.i(TAG, "XXXX is running");
        } else  {
            // RUN THE CODE TO START THE ACTIVITY
        }
}
于 2012-11-14T12:23:02.477 回答
0

您可以使用ActivityManager获取当前正在运行的应用程序并在设备上执行最近的任务,如下所示:

 ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
 List<RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

    for (int i = 0; i < recentTasks.size(); i++) 
    {
         // Here you can put your logic for executing new task         
    }
于 2012-11-14T12:19:45.773 回答
0

如果你想知道一个应用程序是否正在运行,你应该看看getRunningTasks

此外,这篇文章可能会对您有所帮助。

于 2012-11-14T12:20:08.567 回答
0

你可以得到哪个活动正在运行

List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1); 
String currentActivity=taskInfo.get(0).topActivity.getPackageName();

然后检查

if(currentActivity!=(your activity))
{
    **your intent**
}
else{
"app already running"
}

希望能帮助到你。谢谢你

于 2014-11-26T10:17:22.847 回答