안녕하세요. 안드로이드 개발을 시작하는 초보 개발자입니다.
특정 어플의 실행을 방지하기 위한 방법을 모색하다가
백그라운드 서비스를 수행하여 5초에 한번씩 실행 중인 앱중에 특정 패키지를 확인하면 종료하려고 합니다.
다음이 제가 구현한 백그라운드 서비스의 OnStart 메쏘드구요.
@Override
public void onStart(Intent intent, int startId) {
Log.d("slog", "onStart()");
super.onStart(intent, startId);
String packageName = null;
SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
packageName = pref.getString("pkgname", ""); //공유자원에서 패키지명 가져오기
Log.i("ServiceClass","package : "+ packageName);
ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
//실행중인지 판단
List<RunningAppProcessInfo> list = am.getRunningAppProcesses();
for (RunningAppProcessInfo rap : list) {
if(rap.processName.equals(packageName)) { //실행중인 목록에 해당 패키지명이 있을 경우
int sdkVersion = Integer.parseInt(Build.VERSION.SDK); //안드로이드 버젼 확인
if (sdkVersion < 8){
am.restartPackage(rap.processName); //해당 패키지 종료 - 1
} else {
am.killBackgroundProcesses(rap.processName); //해당 패키지 종료 - 1
}
android.os.Process.killProcess(rap.pid); //해당 프로세스 아이디로 프로세스 종료 - 2
Log.i("ServiceClass"," Kill "+ packageName + "!!");
}
}
}
실행 방지를 위한 package명은 액티비티에서 설정하여 SharePerferences 로 전달받아서
실행중인 어플중 해당 패키지명과 동일하면 종료하도록 위와 같이 구현하였으나,
실제 테스트를 해보면 해당 패키지를 종료시키지 못하고 있습니다.
테스트 환경은 Kitkat 4.4 구요.
에뮬레이터에서도, 제가 가지고 있는 갤력시 S3 와 CM1.1이 올라간 모토로라 레이저에서도
정상 동작을 하지 않고 있습니다.
해결책 아시는 분 알려주시면 정말 감사하겠습니다. ㅠ.ㅠ