Android Studio/java

04. [안드로이드/java] 웹뷰(WebView) 뒤로가기 제어

drizzle0925 2021. 6. 30. 16:00
728x90

웹뷰를 띄우고 나서 스마트폰의 뒤로 가기 버튼을 눌렀을 때 앱이 종료됩니다. 이 현상을 막고 그전 페이지로 이동하기 위해서는 다음과 같은 설정이 필요합니다.

 

 

canGoBack() 메서드를 이용하여 웹뷰에서 뒤로 가기 버튼을 눌렀을 때 앱이 종료되는 것이 아니라 그전 페이지로 넘어가게 됩니다. 

 

 

goBack()을 이용하여 웹뷰에서 뒤로 가기를 설정할 수 있게 됩니다.

 

 

아래 코드를 이용하면 웹뷰에서 그 전 페이지로 이동하고 더 이상 이동할 페이지가 없을 경우 앱이 종료됩니다.

@Override
public void onBackPressed() {
    if(webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
}

 

 

네이버 앱의 경우 뒤로가기 버튼을 2번 눌러서 종료하는데 그런 경우에는 아래 코드를 삽입하면 됩니다.

// 전역변수 선언
private long backBtnTime = 0;

@Override
public void onBackPressed() {
    long curTime = System.currentTimeMillis();
    long gapTime = curTime - backBtnTime;
    if (mWebView.canGoBack()) {
        mWebView.goBack();
    } else if (0 <= gapTime && 2000 >= gapTime) {
        super.onBackPressed();
    } else {
        backBtnTime = curTime;
        Toast.makeText(this, "한번 더 누르면 종료됩니다.", Toast.LENGTH_SHORT).show();
}

참고사이트

https://developer.android.com/reference/android/webkit/WebView

 

728x90