美文网首页
Android getRunningAppProcesses简单

Android getRunningAppProcesses简单

作者: 逃离_102 | 来源:发表于2022-09-01 17:31 被阅读0次

说明

getRunningAppProcesses:获得当前正在运行的所有应用程序的进程,一般用于判断当前进程是否在前台。processName,importance2个参数联合判断,实例如下:

    /**
     * app是否是前台(通过进程的级别判断)
     * @param context 上下文
     * @return true表示前台 false表示后台
     */
    private static boolean isAppForeground(@Nullable Context context) {
        if (context != null) {
            ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
            if (activityManager != null) {
                List<ActivityManager.RunningAppProcessInfo> processes = activityManager.getRunningAppProcesses();
                if (processes != null) {
                    for (ActivityManager.RunningAppProcessInfo processInfo : processes) {
                        if (processInfo != null
                                && processInfo.processName != null
                                && (TextUtils.equals(processInfo.processName, context.getPackageName()))) {
                            if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                                return true;
                            }
                        }
                    }
                }
            }
        } 
        return false;
    }

注意

这里得到的进程信息里只有被载入当前进程的所有包名pkgList,所以只能判断当前列表有没有你需要监控的包名。android6.0以上的getRunningAppProcesses也失效,系统关闭了三方软件对系统进程的访问,出于安全考虑,当前只能获取自身应用的相关信息。所以只能自用,别想用此监控别的APP。

就说到这了,有什么不对的地方,欢迎指正,有什么没说全的,欢迎讨论留言

相关文章

网友评论

      本文标题:Android getRunningAppProcesses简单

      本文链接:https://www.haomeiwen.com/subject/zussnrtx.html