2015년 5월 22일 금요일

android 특정 어플 실행 안되게 ( 접근성 이용 )

앞에서 접근성 기능을 이용하여 어플 변화 시점에 대한 것을 알아보았다.

http://swlock.blogspot.kr/2015/05/android-active-app.html

조금 소스를 수정하여 어플의 동작을 감시하여 특정 어플이 동작 안되도록 하겠다.
특정 어플이 동작 안되게 하려면 강제 종료시키는 방법이 있을 수 있고 다른 하나는 다른 어플을 띄우는 방법, 또 다른 하나는 화면을 잠그는 방법이 있을 수 있다.
여기에서는 home 키를 눌러 런처로 가는 방법을 사용하겠다.

아래 함수를 사용하였다.


 private void gotoHome() {
  Intent intent = new Intent();
  intent.setAction("android.intent.action.MAIN");
  intent.addCategory("android.intent.category.HOME");
  intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 
   | Intent.FLAG_ACTIVITY_FORWARD_RESULT
      | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP
      | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
  startActivity(intent);
 }

그럼 이 함수를 언제 호출 하면 될까?
앞서 만든 함수에 어플 패키지명이 일치하면 gotoHome 함수를 호출 하도록 변경하였다.


public class WindowChangeDetectingService extends AccessibilityService 
{

 @Override
 public void onAccessibilityEvent(AccessibilityEvent event) {
  if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED){
   Log.i("WindowChangeDetectingService",
     "Window Package: " + event.getPackageName());
   if( "com.kakao.talk".equals(event.getPackageName())){
    gotoHome(); 
   }
  }
 }
}

테스트시 완벽하게 동작한다.

소스가 오래되어서 실행이 될지 모르겠지만...
작업소스 : 업데이트 2017.12.13
https://drive.google.com/file/d/16FDnISe42HevEal3XVVd_vO8babMKiK8/view?usp=sharing

댓글 12개:

  1. 혹시 풀 프로젝트를 볼 수 있을까요?ㅠㅠ

    답글삭제
    답글
    1. https://drive.google.com/file/d/16FDnISe42HevEal3XVVd_vO8babMKiK8/view?usp=sharing
      본문에도 업데이트 하였습니다

      삭제
  2. 정말정말 감사합니다 ㅠㅠ 진짜 많은 도움이 되었네요

    답글삭제
  3. 혹시 자료 공유 가능하신가요?

    답글삭제
    답글
    1. 본문 링크에 있습니다.
      https://drive.google.com/file/d/16FDnISe42HevEal3XVVd_vO8babMKiK8/view?usp=sharing

      삭제
  4. 코드 전체를 볼 수 있을까요?ㅜㅜ

    답글삭제
    답글
    1. 본문 링크에 있습니다.
      https://drive.google.com/file/d/16FDnISe42HevEal3XVVd_vO8babMKiK8/view?usp=sharing

      삭제
  5. 풀 코드를 볼 수 있을까요 ㅠㅠ?

    답글삭제
  6. 안녕하세요.
    안드로이드 초심자라 많은 도움이 될 것 같아요!
    링크에 액세스 할 수 없는데 전체코드 참조할 방법 없을까요?

    답글삭제
  7. 클래시로얄앱이 차단되어 있어요 앱실행이 안되요 계속 누르면 작업을 수행할수 없음이 나와요 도와주세요

    답글삭제
  8. 안녕하세요 혹시나 아직 답변을 해주실지 모르겠네요.
    어린이들의 학습집중도 향상을 위한 학습시 게임 앱 등을 차단하기 위한 서비스를 개발중인데요.
    접근성 권한을 거부상태로 놓으면 해당 기능이 작동하지 않게되는데
    권한을 거부로 설정하는 과정에서 이벤트를 감지하여 사전작업을 하는것도 가능한가요?

    답글삭제
  9. 이것 저것 시행 착오가 필요한 부분이라 제가 답변드릴 수 있는 부분은 아닌것 같습니다.

    답글삭제