2013년 4월 29일 월요일

어플 실행 여부 확인

public static boolean isRunningProcess(Context context, String packageName){
 boolean isRunning = false;
  
//        ActivityManager actMng = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);                      
//        List<RunningAppProcessInfo> proceses = actMng.getRunningAppProcesses(); 
//        for(RunningAppProcessInfo rap : proceses){                                
//         if( rap.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND && rap.processName.equals(packageName)){
//                    isRunning = true;
//                    break;
//         }
//        }
 
 ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
 List<RunningTaskInfo> info;
 info = activityManager.getRunningTasks(1);
 for (Iterator iterator = info.iterator(); iterator.hasNext();)  {
  RunningTaskInfo runningTaskInfo = (RunningTaskInfo) iterator.next();
  if(runningTaskInfo.topActivity.getClassName().startsWith(packageName) ) {
   return true;
  }
 }
 
 return isRunning;
}

댓글 1개:

  1. 주석 부분은 RunningAppProcessInfo를 이용해서 확인하는 것인데 OS의 버그인지 몰라도 IMPORTANCE_FOREGROUND 체크가 제대로 되지 않아 주석 아래 부분으로 구현했음.

    답글삭제