Android > Webview - JavaScriptMethods() - 웹뷰와 자바스크립트
등록일 : 2017-07-06 17:45
조회수 : 93,979
먼저 WebView의 만드는 방법을 알아 봤다.
웹뷰의 설정정보는 WebSettings 객체에 포함되어 있는데, 이 셋팅 정보가 여러가지가 있는데요.
이 중에서 자바스크립트를 허용하기 위해서는 setJavaScriptEnabled() 모서드를 이용하는데, setJavaScriptEnabled(true) 로 설정해야 합니다.
스크립트 허용 여부는 디폴트가 'false'로 되어 있으므로 자바스크립트를 사용해야 할 필요가 있을 때는 이 코드를 추가해야 합니다.
private WebView webView;
private Handler mHandler = new Handler();
public void Connect_URL(String conn_url)
{
String conn_url = "http://abc.co.kr";
webView = (WebView) findViewById(R.id.webview1);
WebSettings webSettings = webView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
webView.setWebChromeClient(new WebBrowserClient());
webView.setWebViewClient(new InfoWebViewClient());
webView.addJavascriptInterface(new JavaScriptMethods(), "sample");
webView.loadUrl(conn_url);
}
final class JavaScriptMethods {
JavaScriptMethods() { }
//웹페이지의 자바스크립트는 여기에서 처리한다.
public void fnc_test()
{
Toast.makeText(getApplicationContext(),"This Function fnc_test()",500).show();
}
//애플리케이션에서 웹페이지의 자바스크립트를 호출하는 예제
public void clickToPage()
{
mHandler.post(new Runnable() {
public void run() {
webView.loadUrl("javascript:changeFace()");
}
});
}
}
위의 소스에서 웹페이지의 addJavascriptInterface() 메서드를 통해 웹페이지의 자바스크립트 인터페이스 함수를 설정할 수 있는데,
JavaScriptMethods 클레스에서 받아서 처리 할 수 있습니다.
"sample" 은 객체이름이 됩니다.
즉 웹페이지에서 자바의 fnc_test() 함수를 호출하고자 할때는 window.sample.fnc_test() 처럼 사용 할 수 있습니다.
애플리케이션에서 웹페이지의 자바스크립트를 호출하는 예제는 clickToPage() 함수 입니다.
여기에서는 자바스크립트를 이용해 접근할 때 안드로이드에서 정의된 핸들러를 사용해야 하며, Runnable 객체를 만들고
post() 메서드를 이용합니다.