Service 약이되면 좋은 약이지만 독이 되면 독이 될 수있는 그러한 기능인데..
그렇다면 이제 어떠한 서비스가 실행중인지를 나타내는 소스를 작성해보도록한다.
<uses-permission android:name="android.permission.GET_TASKS"/>
기본적으로 퍼시면은 GET_TASKS이다. 이것을 실행시켜야만 실행중 클래스를 볼 수있다는데,,,
근데 하라고는 나와있는데 안해도 되는 듯하다. ;;
아무튼 본론으로 들어가서 소스를 작성해보도록하자.
public boolean isRunningRecord(String service){
//Service 매니저를 가져 온다.
ActivityManager manager=(ActivityManager)getSystemService(ACTIVITY_SERVICE);
//모든 서비스의 목록을 가져오도록한다.
List<ActivityManager.RunningServiceInfo> rsi=manager.getRunningServices(1000);
for(int i=0;i<rsi.size();i++){
ActivityManager.RunningServiceInfo rsInfo=rsi.get(i);
//하나씩 일일히 검사한다.
Log.e("null","list "+i+" "+rsi.size()+" "+rsInfo.service.getClassName());
if(rsInfo.service.getClassName().equals(service)){
//특정 찾고있는 것이 있으면 트루 를 반환한다.
return true;
}
}
return false;
}
함수부분만 적었는데 의외로 간단하다.
이것으로 현재 수행되고 있는 서비스를 확인할 수있으며, 악성코드 또한 검출할 수있지 않을까 생각이 든다.