检测Service是否已启动
publicstaticbooleanisServiceRunning(StringserviceClassName){finalActivityManageractivityManager=(ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE);finalList<RunningServiceInfo>services=activityManager.getRunningServices(Integer.MAX_VALUE);for(RunningServiceInforunningServiceInfo:services){if(runningServiceInfo.service.getClassName().equals(serviceClassName)){returntrue;}}returnfalse;}
检测应用程序员是否已开启
权限
<uses-permission android:name="android.permission.GET_TASKS"/>
代码----判断Activity是否正在运行
ActivityManageram=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningTaskInfo>list=am.getRunningTasks(100);booleanisAppRunning=false;StringMY_PKG_NAME="com.cyberblue.iitag";for(RunningTaskInfoinfo:list){if(info.topActivity.getPackageName().equals(MY_PKG_NAME)||info.baseActivity.getPackageName().equals(MY_PKG_NAME)){isAppRunning=true;Log.i(TAG,info.topActivity.getPackageName()+"info.baseActivity.getPackageName()="+info.baseActivity.getPackageName());break;}}
/***检测某Activity是否在当前Task的栈顶*/publicbooleanisTopActivy(StringcmdName){ActivityManagermanager=(ActivityManager)context.getSystemService(ACTIVITY_SERVICE);List<RunningTaskInfo>runningTaskInfos=manager.getRunningTasks(1);StringcmpNameTemp=null;if(null!=runningTaskInfos){cmpNameTemp=(runningTaskInfos.get(0).topActivity).toString);Log.e("cmpname","cmpname:"+cmpName);}if(null==cmpNameTemp)returnfalse;returncmpNameTemp.equals(cmdName);}
下面代码检测当前Activity是不是栏启动器
privatebooleanisLauncherRunnig(Contextcontext){booleanresult=false;List<String>names=getAllTheLauncher();ActivityManagermActivityManager=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);List<ActivityManager.RunningAppProcessInfo>appList=mActivityManager.getRunningAppProcesses();for(RunningAppProcessInforunning:appList){if(running.importance==RunningAppProcessInfo.IMPORTANCE_FOREGROUND){for(inti=0;i<names.size();i++){if(names.get(i).equals(running.processName)){result=true;break;}}}}returnresult;}
----------------判断App是否正在运行---------------------
/***判断app是否正在运行*@paramctx*@parampackageName*@return*/publicbooleanappIsRunning(Contextctx,StringpackageName){ActivityManageram=(ActivityManager)ctx.getSystemService(ACTIVITY_SERVICE);List<RunningAppProcessInfo>runningAppProcesses=am.getRunningAppProcesses();if(runningAppProcesses!=null){for(RunningAppProcessInforunningAppProcessInfo:runningAppProcesses){if(runningAppProcessInfo.processName.startsWith(packageName)){returntrue;}}}returnfalse;}/***app是否在后台运行*@paramctx*@parampackageName*@return*/publicbooleanappIsBackgroundRunning(Contextctx,StringpackageName){ActivityManageram=(ActivityManager)ctx.getSystemService(ACTIVITY_SERVICE);List<RunningAppProcessInfo>runningAppProcesses=am.getRunningAppProcesses();if(runningAppProcesses!=null){for(RunningAppProcessInforunningAppProcessInfo:runningAppProcesses){if(runningAppProcessInfo.processName.startsWith(packageName)){returnrunningAppProcessInfo.importance!=RunningAppProcessInfo.IMPORTANCE_FOREGROUND&&runningAppProcessInfo.importance!=RunningAppProcessInfo.IMPORTANCE_VISIBLE;//排除无界面的app}}}returnfalse;}