서비스가 시작되고 프로세스가 시작되면서부터 생기는 로그를 가지고 걸리는 패키지이름이 걸리면 막는 방식인거같은데...
어플을 실행하고 서비스까지는 잘 실행되는데 그다음부터는 어플을 실행해도 소스가 잘못된건지 동작을 안하는거같네요 ㅠㅠ
process = Runtime.getRuntime().exec(
"/system/bin/logcat -b main -s ActivityManager:I");
이부분 부터 자세하게좀 설명좀 부탁드릴게요 ㅠㅠ
혹시 아래의 소스에 문제가 있는걸까요...?
private void runLog(){
Process process = null;
try{
//현재까지의 로그를 모두 지운다
Runtime.getRuntime().exec("/system/bin/logcat -c");
//로그읽기 시작
process = Runtime.getRuntime().exec(
"/system/bin/logcat -b main -s ActivityManager:I");
}catch(IOException e){
Log.e(getPackageName(),e.toString());
}
BufferedReader reader = null;
try{
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
Log.i("LOG4 mStop", mStop+"");
while (mStop) { // 서비스 시작
line = reader.readLine();
// 액티비티 시작로그 잡아내기
// 패키지 이름으로 필터링
for (int i = 0; i < mPackageFilter_package.size(); i++) {
if (line.contains("cmp=" + mPackageFilter_package.get(i))) {
Log.i("LOG4 패키지이름 필터링 진입", "패키지이름 필터링 진입");
if (!mPassApp){
popupLock(mPackageFilter_package.get(i));
} else {
mPassApp = false;
}
}
}
}
}catch(IOException e){
Log.e(getPackageName(),e.toString());
}finally{
try{
reader.close();
}catch (IOException e){
Log.e(getPackageName(),e.toString());
}
process.destroy();
process = null;
mThread.stop();
mThread.destroy();
reader = null;
this.stopSelf();
}
}
로그방식은 개인적으로 나쁘다고 생각합니다. 신버전 OS에서 안되기도 하구요
실행중인 프로세스를 얻어오는게 좋다고 봐요