有没有办法在Android中获取所有当前活跃的应用程序?

时间:2017-08-08 10:25:45

标签: android

我需要在用户在一段时间内打开其他应用时将其锁定,但我不想实现一项服务,该服务会在每一秒后检查哪个应用程序被打开并相应地锁定。我想要的是,不知何故,Android会播放有效的应用信息。

是否有可能,如果可以,怎么样?

2 个答案:

答案 0 :(得分:1)

调用ActivityManager.getRunningAppProcesses(),它会显示正在运行的app的列表。如果您想查看详细信息,请遍历ActivityManager.RunningAppProcessInfo个对象。

您还可以通过以下方式检查您的应用是否处于后台:

public static boolean isAppIsInBackground(Context context) {
    boolean isInBackground = true;
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
        List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
            if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                for (String activeProcess : processInfo.pkgList) {
                    if (activeProcess.equals(context.getPackageName())) {
                        isInBackground = false;
                    }
                }
            }
        }
    } else {
        List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
        ComponentName componentInfo = taskInfo.get(0).topActivity;
        if (componentInfo.getPackageName().equals(context.getPackageName())) {
            isInBackground = false;
        }
    }

    return isInBackground;
}

答案 1 :(得分:0)

  

我想要的是,不知何故,Android将使用有效的应用信息进行广播。

那不存在。