Android

WebView 기반의 안드로이드 네이티브 앱 개발 3 (뒤로가기)

태인킴 2020. 5. 27. 23:06
반응형


https://coding-food-court.tistory.com/41

 

WebView 기반의 안드로이드 네이티브 앱 개발 2

https://coding-food-court.tistory.com/39 WebView 기반의 안드로이드 네이티브 앱 개발 1 안드로이드의 WebView를 이용해서 웹 기반의 안드로이드 네이티브 앱을 개발 하겠습니다. 1. 레이아웃 XML의 WebView를..

coding-food-court.tistory.com

지난 시간에 우리는 WebView 안에서 동작하는 JavaScript 소스를 android 네이티브 소스에서 어떻게 컨트롤 하고 interface를 정의 하는지 배웠습니다. 또한, WebView 안에 링크를 통한 '페이지 탐색'을 핸들링 하여 android 네이티브 앱을 벗어나지 않고, 사용자들에게 일관된 UI/UX를 경험 할수 있도록 처리 하였습니다.

 

이번 시간에는 

1. android 네이티브 Activity 에서 뒤로가기 버튼을 클릭 했을 때, WebView에서 처리하는 방법

2. 안전하게 WebView의 팝업 및 새창을 여는 방법

을 배워 보도록 하겠습니다.

 

 

1-1. android 네이티브 Activity의 onKeyDown() 메소드 오버라이딩

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    return super.onKeyDown(keyCode, event);
}

 

1-2. 뒤로가기 버튼 체크!   and   WebView의 방문 기록 체크!

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
        myWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

 

1-3. WebView의 방문 기록이 있다면 해당 기록으로 이동

WebViewcanGoBack(), canGoForward() 메소드를 통해서 뒤 또는 앞방문기록이 있는지 체크 할수 있습니다. 또한 goBack(), goForward() 메소드로 해당 기록으로 이동 할수 있습니다.

 

 

2. 안전하게 WebView의 팝업 및 새창을 여는 방법

기본적으로 네이티브에서는 WebView의 팝업 및 새창지원하지 않습니다. 따라서 팝업 및 새창을 띄우고 싶다면, WebSettings.setSupportMultipleWindows()의 파라미터로 true를 설정해 주는 것 입니다. 또한, 보안을 위해서 WebChromeClient.onCreateWindow() 메서드를 오버라이딩 해서는 안됩니다.

 

WebSettings webSettings = myWebView.getSettings();
webSettings.setSupportMultipleWindows(true);

// 아래와 같이 WebChromeClient.onCreateWindow()를 오버라이딩 금지!!	
private class MyWebChromeClient extends WebChromeClient {
    @Override
    public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
        ...
        return true;
	}
}

 

3. 앱 시작시 첫 화면 만들기

https://coding-food-court.tistory.com/52?category=854792

 

WebView 기반 안드로이드 네이티브 앱 개발4(스플래쉬 화면)

WebView기반의 네이티브 앱 개발 할 때 WebView를 처음 띄울때 이미지가 많거나 리소스 용량이 크면 WebView에 로딩이 늦게 되는 경우가 있습니다. 이럴때 WebView가 모두 로딩 되기 전에 로딩 화면을 보�

coding-food-court.tistory.com

 

반응형