투덜이 개발자

[Android] 웹뷰 WebView Back 키를 눌러서 뒤로가기 본문

Program Language/Android

[Android] 웹뷰 WebView Back 키를 눌러서 뒤로가기

엠투 2021. 5. 28. 15:18
반응형

[Android] 웹뷰 WebView Back 키를 눌러서 뒤로가기

 

Back 키를 누르거나 canGoBack() 메소드 이벤트 발생시 앱이 종료가 되는게 아니라 웹페이지 전 페이지로 넘어가게 할 수 있습니다.
goBack()을 이용하여 웹뷰에서 뒤로가기를 설정 할 수 있게 합니다.

 

    // Back 키를 눌러서 뒤로가기 Start
    @Override
    public boolean onKeyDown(int KeyCode, KeyEvent event){
        if((KeyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()){
            mWebView.goBack();
            return true;
        }else{
            return super.onKeyDown(KeyCode, event);
        }
    }

    //    @Override
    //    public void onBackPressed() {
    //        if(mWebView.canGoBack()){
    //            mWebView.goBack();
    //        }else{
    //            super.onBackPressed();
    //        }
    //    }
    // Back 키를 눌러서 뒤로가기 End

 

웹뷰를 사용할때 뒤로가기 버튼으로 인해 DB INSERT 가 중복 되는 경우가 발생합니다.

웹페이지에서는 db 인서트 후 location.href 로 임시 페이지로 이동 시켜서 처리하고, 

단말기에서 2초 안에 뒤로가기 두번 클릭시 onBackPressed(); 호출 하는 방식으로 수정하였습니다.

    // Back 키를 눌러서 뒤로가기 Start
    private long backKeyPressedTime = 0;

    @Override
    public boolean onKeyDown(int KeyCode, KeyEvent event){

        long curTime = System.currentTimeMillis();
        long gapTime = curTime - backKeyPressedTime;

        if((KeyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()){

            if(0 <= gapTime && 2000 >= gapTime) {
                super.onBackPressed();
                return true;

            } else {
                backKeyPressedTime = curTime;
                mWebView.goBack();
                return true;
            }

        }else{
            return super.onKeyDown(KeyCode, event);
        }
    }
반응형