https://coding-food-court.tistory.com/41
지난 시간에 우리는 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의 방문 기록이 있다면 해당 기록으로 이동
WebView는 canGoBack(), 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
'Android' 카테고리의 다른 글
안드로이드 앱 난독화(Proguard) (0) | 2020.06.30 |
---|---|
WebView 기반 안드로이드 네이티브 앱 개발4(스플래쉬 화면) (0) | 2020.06.08 |
WebView 기반의 안드로이드 네이티브 앱 개발 2 (JavaScript 설정) (0) | 2020.05.22 |
WebView 기반의 안드로이드 네이티브 앱 개발1(WebView load) (0) | 2020.05.20 |
WebView 기반 안드로이드 네이티브 앱 개발5 (file upload) (9) | 2020.05.19 |