1. 먼저 Internet 사용 권한이 있어야 한다.
<uses-permission android:name="android.permission.INTERNET" />
2. 간단한 WebView
예) 단순히 Google 페이지를 열어 준다.
WebView webView = new WebView(this);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://www.google.com");
setContentView(webView);
3. javascript 활성화
webView.getSettings().setJavaScriptEnabled(true);
4. back 키를 누르면 뒤로 가고 history 가 없으면 기본 back 키 동작
예)
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
5. asset 에 있는 web page 열기
loadUrl() 함수에 주소 지정시 아래와 같이 함
webView.loadUrl("file:///android_asset/html/index.html");
실제 위치는 assets/html/index.html
6. javasript alert 창 보이기
예) 간단하게 WebChromeCilent 객체를 지정해 주면 된다.
webView.setWebChromeClient(new WebChromeClient());
7. 위 사항들 종합
예) 자바 코드
webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("file:///android_asset/html/index.html");
setContentView(webView);
예) HTML 코드 : assets/html/index.html
<html>
<head>
<title>WebView Test</title>
</head>
<body>
<h1>WebView Test</h1>
<a href="javascript:alert('Test');">Alert Test</a><br />
Javascript is <span id="text">disabled</span>
<script type="text/javascript">
var text = document.getElementById("text");
text.innerHTML = "enabled";
</script>
</body>
</html>
8. Javascript Interface 사용
- Javascript Interace 를 이용하면 웹 페이지에서 javascript 를 이용해서 java 코드를 호출 할 수 있다.
- 참고 : http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29
- 함수는 반드시 public 으로 지정해야 하고 안드로이드 4.2 (JellyBean MR1) 부터는 @JavascriptInterface 을 지정해 줘야 함
예) 자바 코드
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public String toString() {
return "AppInterface";
}
@JavascriptInterface
public void toast(String text) {
Toast.makeText(WebViewActivity.this, text, Toast.LENGTH_LONG).show();
}
}, "AppInterface");
예) HTML 코드
<a href="javascript:AppInterface.toast('Hello');">Javascript Interface Test : Toast</a><br />
9. 하이퍼 링크 URL 을 확인하여 기본 브라우저로 띄우기
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().indexOf("google") >= 0) {
// host 명에 google 이 포함되면 webview 로 보여줌
return false;
}
// 아니면 기본 브라우저를 띄움
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
});
댓글 없음:
댓글 쓰기