백그라운드에서 메모리에 상주하고있다가 특정 어플이 실행되면 특정 행동을 하도록 하고싶습니다.
그런데 문제가 있는데
인터넷에서 소스를 좀 찾아보니
액티비티 매니저 생성해서 그걸로 실행중인 프로세스를 불러오고 List에 넣어줄수있는것같은데
이상하게 서비스가 돌아가는 자기어플리케이션만 나오고 나머지는 잡질못하네요
어떻게 해야하나요?
일단 소스는 이렇습니다.
while (mStop) {
ActivityManager actMng = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
String strPackage = "";
List<ActivityManager.RunningAppProcessInfo> list = actMng.getRunningAppProcesses();
for(ActivityManager.RunningAppProcessInfo process : list){
if(process.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND)
{
strPackage = process.processName; //package이름과 동일함.
Log.d"TEST", strPackage);
}
}
}
이렇게 하면 포그라운드 작업만 체그하고 서비스를 시작시킨다음 홈화면으로 나가면
해당어플리케이션은 로그에 찍히질 않는데 여기까지는 의도대로 입니다. 하지만 이상태에서 다른 어플리케이션을 실행해도 로그에 찍히질않다가 다시 서비스를 실행시킨 어플리케이션을 활성화하면 해당어플리케이션만 로그애 찍히기 시작하네요
그리고
똑같은 while문 안에
ActivityManager actMng = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
String strPackage = "";
List<ActivityManager.RunningAppProcessInfo> list = actMng.getRunningAppProcesses();
for(int i=0;i<list.size();i++){
Log.d("test",list.get(i).processName);
}
이렇게 시도해봤으나 마찬가지로 서비스를 실행시킨 어플리케이션만 로그에 찍힙니다.
어떻게 해야하나요?