투케이2K

223. (AndroidStudio/android/java) 안드로이드 웹뷰 (webview) 뒤로 가기 제어 실시 - canGoBack , getUrl 본문

Android

223. (AndroidStudio/android/java) 안드로이드 웹뷰 (webview) 뒤로 가기 제어 실시 - canGoBack , getUrl

투케이2K 2021. 11. 26. 09:02

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java

 

[소스 코드]

    // TODO [모바일 키 이벤트 발생 체크 부분]
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // [모바일 디바이스의 뒤로가기 키 이벤트가 발생한 경우]
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            try {
                Log.i("---","---");
                Log.w("//===========//","================================================");
                Log.i("","\n"+"[A_Main >> onKeyDown() :: 백버튼 터치시 뒤로 가기 이벤트 실시]");
                Log.i("","\n"+"[getUrl() :: "+String.valueOf(main_webview.getUrl())+"]");
                Log.i("","\n"+"[getOriginalUrl() :: "+String.valueOf(main_webview.getOriginalUrl())+"]");
                Log.i("","\n"+"[canGoBack() :: "+String.valueOf(main_webview.canGoBack())+"]");
                Log.w("//===========//","================================================");
                Log.i("---","---");


                /** 
                 * [설 명]
                 * 1. 현재 웹 페이지 주소 확인 : getUrl , getOriginalUrl
                 * 2. 웹 페이지 내에서 뒤로가기 이벤트 수행 가능 여부 : canGoBack
                 * 3. 로직 : 
                 *    - 뒤로가기 이벤트 발생 시 >> 웹 페이지 뒤로가기 여부 체크 및 특정 주소인 경우 체크
                 *    - 더이상 뒤로 갈 수 없는 경우나, 특정 주소인 경우 앱 종료 실시
                 *    - 뒤로 갈 수 있는 경우나, 특정 주소가 아닌 경우 웹뷰 뒤로가기 수행 실시
                 */


                // [더이상 웹뷰에서 뒤로갈 페이지가 없을 경우 이거나 특정 주소인 경우]
                if (main_webview.canGoBack() == false
                    || String.valueOf(main_webview.getUrl()).equals("특정 주소")
                    || String.valueOf(main_webview.getOriginalUrl()).equals("특정 주소")){

                    finish(); // [액티비티 종료]
                    overridePendingTransition(0,0);
                }
                // [웹뷰에서 뒤로 갈 페이지가 있는 경우]
                else {
                    main_webview.goBack(); // [웹뷰 뒤로가기]
                }
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }
        return true;
    }

 

반응형
Comments