我可以查看当前从服务运行的应用程序吗?

时间:2012-10-25 15:52:51

标签: android android-activity

我试图通过以下方式检查用户从我创建的服务中查看当前正在/正在使用的应用程序或活动:

 ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(
                        Context.ACTIVITY_SERVICE);

                List<ActivityManager.RunningAppProcessInfo> processList = am.getRunningAppProcesses();
String cProcess = processList.get(0).processName;

但这有时会显示com.android.systemui或com.android.buetooth等服务,即使其他活动位于前台也是如此。

我想这是检查服务而不是活动..有没有更好的更可靠的方式来查看当前哪个应用程序在前台?

3 个答案:

答案 0 :(得分:2)

我认为activityManager.getRunningTasks()更符合您的需求,但请注意Android开发人员警告不要将ActivityManager用于您应用的任何核心功能。

答案 1 :(得分:0)

尝试检查流程的重要性:

List<RunningAppProcessInfo> appProcesses= null;
appProcesses = activityManager.getRunningAppProcesses();
if (appProcesses!=null) {

    for (RunningAppProcessInfo appProcess : appProcesses) {
        if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
            // Log.d("MYTAG",appProcess.processName+":"+appProcess.importance+" is foreground");
        }
    }
}

答案 2 :(得分:0)

这就像一个魅力..感谢JRaymond:

ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(
                    Context.ACTIVITY_SERVICE);

            List<ActivityManager.RunningTaskInfo> processList = am.getRunningTasks(3);


            String cProcess = processList.get(0).baseActivity.getPackageName();