package cn.trinea.android.common.util; import java.util.List; import android.app.ActivityManager; import android.app.ActivityManager.RunningAppProcessInfo; import android.app.ActivityManager.RunningTaskInfo; import android.content.ComponentName; import android.content.Context; /** * AppUtils * <ul> * <li>{@link cn.trinea.android.common.util.AppUtils#isNamedProcess(android.content.Context, String)}</li> * </ul> * * @author <a href="http://www.trinea.cn" target="_blank">Trinea</a> 2014-5-07 */ public class AppUtils { private AppUtils() { throw new AssertionError(); } /** * whether this process is named with processName * * @param context * @param processName * @return <ul> * return whether this process is named with processName * <li>if context is null, return false</li> * <li>if {@link android.app.ActivityManager#getRunningAppProcesses()} is null, return false</li> * <li>if one process of {@link android.app.ActivityManager#getRunningAppProcesses()} is equal to processName, return * true, otherwise return false</li> * </ul> */ public static boolean isNamedProcess(Context context, String processName) { if (context == null) { return false; } int pid = android.os.Process.myPid(); ActivityManager manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> processInfoList = manager.getRunningAppProcesses(); if (ListUtils.isEmpty(processInfoList)) { return false; } for (RunningAppProcessInfo processInfo : processInfoList) { if (processInfo != null && processInfo.pid == pid && ObjectUtils.isEquals(processName, processInfo.processName)) { return true; } } return false; } /** * whether application is in background * <ul> * <li>need use permission android.permission.GET_TASKS in Manifest.xml</li> * </ul> * * @param context * @return if application is in background return true, otherwise return false */ public static boolean isApplicationInBackground(Context context) { ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> taskList = am.getRunningTasks(1); if (taskList != null && !taskList.isEmpty()) { ComponentName topActivity = taskList.get(0).topActivity; if (topActivity != null && !topActivity.getPackageName().equals(context.getPackageName())) { return true; } } return false; } }