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

앱개발하는 학생입니다 도와주세요ㅠㅠ

0 추천

제가 만드는 어플에서 키보드를 숨기는 기능이 있어요

기본 앱인 메세지에서 문자 입력창을 눌러도 키보드가 올라오지 않도록 하고 싶어요

제 어플에서 키보드 숨기기 기능을 on시키게 되면 서비스가 시작되면서

타이머가 작동하게 되구요

타이머 안에는 키보드 숨기는 기능이 계속 반복 실행되는데요. 좀 비효율적인거 같지만 아무리생각해도 좋은게 안떠오르네요..

메세지앱을 실행하게되면 이게 메세지앱인지 패키지이름으로 확인해서 맞으면 키보드를 숨기게하는거예요..

근데 아무리해도 키보드숨기기가 실행이 안되요ㅠㅠ

저기서 view가 문제인거 같은데 메세지앱이 실행됬을 때 문자입력창있는 화면을 어떻게 뷰로 받아올 수 있는 건가요?

view = activity.getCurrentFocus();

처음엔 이렇게해서 받았었는데 찾아보니까 context.getWindow().getDecorView() ; 이렇게 하라고 하시는 분들이 계시더라구요 해봤는데 getWindow()에서 에러가 나네요..
이거말고도 문제가 있을꺼같은데 뭐가 잘못인지 잘 모르겠어요 도와주세요ㅜㅜ

repeateTask = new TimerTask() {
    public void run () {
        Log.d("myTask", "run()");

    	View view = context.getWindow().getDecorView() ;
    	if (view != null) {
       		InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        	imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
        	Log.d("running_check", "true");
  	}
    }
};
timer.schedule(repeateTask, 0, 500);

 

 

익명사용자 님이 2017년 11월 27일 질문

1개의 답변

0 추천
말씀하신 기능은 안드로이드에서 os 정책상 일반적인 기기에서는 구현이 불가능할 것 같고 루트 권한 획득 후에나 가능할 것 같습니다.

그리고 service는 activity와 다르게 화면을 갖지 않기 떄문에 getWindow()에서 오류가 발생합니다.
minor (13,710 포인트) 님이 2017년 11월 27일 답변
...