태스크 킬러 같은 프로그램을 만들어보고 있습니다.

 

휴대폰에 기본 내장된  작업관리자프로그램과 advaced 태스크 킬러 등 각각의 프로그램들을 보면

 

중지 시킬 프로세스 목록을   자신들 만의 패턴으로  정의하고 있는 것을 추측할 수 있는데요,

 

기본적으로 중지 시킬 수 없는 프로세스는 목록 생성시 제외하고  죽일 수 있는 프로세스만 목록에 보여줍니다.(다시 살아나는 프로세스 예외)

 

해당 프로세스가 죽일 수 있는 프로세스인지 판별해낼 수 있는 방법이 있나요?

 

<현재까지 접근 방법>

 

1. 전체 프로세스 목록 얻어오기 - 성공

 

2. shell로 명령어 접근해서 /system/app/ 목록 얻어보자  - 실패

 

3. 직접 파일 목록구해서 별명이름.apk로 부터

     패키지 이름 얻어서  시스템 패키지 여부 확인해보자 - 성공(매우 비효율적)

 

4. 패키지 매니저를 통한 직접 데이터 Get - 성공(효율적)

 

5.  얻어낸 정보(몇개 제외)

     result +="*********************************\n";
      result +="Package Name:    "+af.packageName+"\n";
      result +="sdk 버젼:    "+af.targetSdkVersion+"\n";
      result +="클래스이름: "+af.className+"\n";
      result +="풀패키지 경로public:     "+af.publicSourceDir+"\n";
      result +="풀패키지 경로:     "+af.sourceDir+"\n";
      result +="소스경로: "+af.dataDir+"\n";
      result +="리소스지시자스타일(디폴트:0):   "+af.descriptionRes+"\n";
      result +="플래그값:  "+af.flags+"\n";
      result +="라벨:    "+af.labelRes+"\n";
      
      result +="권한:"+af.permission+"\n";
      result +="프로세스이름:    "+af.processName+"\n";
      
      
      result +="taskAffinity:   "+af.taskAffinity+"\n";
      result +="테마:   "+af.theme+"\n";
      result +="uid:   "+af.uid+"\n";
      result +="*********************************\n";

 

 

일단 이정도 얻어냈지만, 이거가지고 기준이 될만한 패턴을 만들지 못하고 있습니다.

 

단순히 소스 경로가 /system/app/ 에 있다고 kill 목록에서 제외하면 아닌것 같고.

 

패키지명에 특정 문자열이 있다고해서 제외한다고 했을때도 뭔가 아닌거 같고...

 

(ex. inputmethod-키보드   skt-휴대폰 제조사 등등...)

 

힌트를 주셨으면 합니다. (_ _)