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
혹시 풀 프로젝트를 볼 수 있을까요?ㅠㅠ
답글삭제https://drive.google.com/file/d/16FDnISe42HevEal3XVVd_vO8babMKiK8/view?usp=sharing
삭제본문에도 업데이트 하였습니다
정말정말 감사합니다 ㅠㅠ 진짜 많은 도움이 되었네요
답글삭제혹시 자료 공유 가능하신가요?
답글삭제본문 링크에 있습니다.
삭제https://drive.google.com/file/d/16FDnISe42HevEal3XVVd_vO8babMKiK8/view?usp=sharing
코드 전체를 볼 수 있을까요?ㅜㅜ
답글삭제본문 링크에 있습니다.
삭제https://drive.google.com/file/d/16FDnISe42HevEal3XVVd_vO8babMKiK8/view?usp=sharing
풀 코드를 볼 수 있을까요 ㅠㅠ?
답글삭제안녕하세요.
답글삭제안드로이드 초심자라 많은 도움이 될 것 같아요!
링크에 액세스 할 수 없는데 전체코드 참조할 방법 없을까요?
클래시로얄앱이 차단되어 있어요 앱실행이 안되요 계속 누르면 작업을 수행할수 없음이 나와요 도와주세요
답글삭제안녕하세요 혹시나 아직 답변을 해주실지 모르겠네요.
답글삭제어린이들의 학습집중도 향상을 위한 학습시 게임 앱 등을 차단하기 위한 서비스를 개발중인데요.
접근성 권한을 거부상태로 놓으면 해당 기능이 작동하지 않게되는데
권한을 거부로 설정하는 과정에서 이벤트를 감지하여 사전작업을 하는것도 가능한가요?
이것 저것 시행 착오가 필요한 부분이라 제가 답변드릴 수 있는 부분은 아닌것 같습니다.
답글삭제