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

특정 어플 실행 차단 소스가 안되는 문제

0 추천
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;

   while (mStop) {
    line = reader.readLine();

    for (int i = 0; i < mPackageFilter.size(); i++) {
     if (line.contains("cmp=" + mPackageFilter.get(i))) {
      if (!mPassApp)
      {
       popupLock(mPackageFilter.get(i));
      } else {
       mPassApp = false;
      }
     }
    }
   }

  }

특정 어플을 차단할때 위의 코드를 이용하면 가능하다고 해서

위의 코드를 넣고 실행을 했으나 line = reader.readLine(); 여기서

무한 대기를 합니다

그래서 avd에서 테스트를 했는데 무리 없이 잘 돌아 갑니다

갤탭에서 하면 데이터를 가져오지만 다른 데이터를 가져와서 차단이 되지 않습니다

hahihohy (300 포인트) 님이 2013년 11월 21일 질문

1개의 답변

0 추천
저 코드를 메인스레드에서 돌리는 건 아니겠지요?

그리고 이 방식은 4.1 이후부터는 안 될 겁니다.
익명사용자 님이 2013년 11월 21일 답변
조금 더 상세하게 설명해주실수 있나요?
위의 방법은 계속 로그를 읽어서  차단하고자 하는 앱의 패키지명으로 실행되는 로그를 찾아내는 방법입니다.
보안상의 이유로 4.1 부터 시스템 로그를 읽지 못하게 하였습니다.
(루팅되어 시스템 권한을 얻거나 시스템 앱으로 설치된 앱은 읽을 수 있습니다.)
시스텝 앱이라는게 디바이스 관리자에 체크되있는 앱을 말씀하시는건가요?
...