티스토리 뷰

Mobile/Android

[Android]WebView를 JavaScript와 연동

out of coding 2015. 3. 10. 16:57

WebView를 이용하여서, WebApp을 개발할 경우에,

안드로이드의 여러가지 기능들을 호출하여서 사용하고 싶을 경우가 발생합니다.


이럴 경우에 사용할수 있는것이 javascript에서 App의 메소드를 바로 호출하는 방식인데요.

너무 간단하게 사용을 할수 있습니다.


1. 자바스크립트 호출되어지는 클래스 만들기


자바스크립트에서 이름으로 호출하면 바로 호출되는 클래스를 만들겁니다.

방식은 일반 클래스를 만드는 방식과 동일하며, Annotation만 추가하여 주면 됩니다. (예전 버전에서는 안그랬는데, 4.2부터는 안넣어주면 오류 납니다. 주의하세요.)


다음과 같이 만들어줍니다.


private class JavaScriptInterface {


@JavascriptInterface

public void onPageOpen(final String url) {


mHandler.post(new Runnable() {


public void run() {

if(mWebView != null) {

mWebView.loadUrl(url);

}

}

}

}

}


2. WebView에 클래스를 스크립트 Interface로 등록


mWebView.getSettings().setJavaScriptEnabled(true);

mWebView.addJavaScriptInterface(new JavaScriptInterface(), "AndroidInterface");


3. JavaScript에서 호출 방식


위에서 지정한 이름이 AndroidInterface이므로 이렇게 호출하여 줍니다.

window.AndroidInterface.onPageOpen("mrgamza.tistory.com");


4. WebPage의 script를 단말에서 호출하는 방식


mWebView.loadUrl("javascript:[script 이름];");


예를 들어 foo라는 함수를 호출하고 싶다면


mWebView.loadUrl("javascript:foo();");


너무 간단해서 추가 설명은 하지 않겠습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함