마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

서비스에서 백그라운드로 특정어플 실행 감지

0 추천

백그라운드에서 메모리에 상주하고있다가 특정 어플이 실행되면 특정 행동을 하도록 하고싶습니다.

그런데 문제가 있는데

인터넷에서 소스를 좀 찾아보니

액티비티 매니저 생성해서 그걸로 실행중인 프로세스를 불러오고 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);
                }

이렇게 시도해봤으나 마찬가지로 서비스를 실행시킨 어플리케이션만 로그에 찍힙니다.

 

어떻게 해야하나요?

안드잘하고싶 (3,310 포인트) 님이 2016년 5월 23일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...