출처 - http://mrgamza.tistory.com/178
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();");
너무 간단해서 추가 설명은 하지 않겠습니다.
'개발 > 안드로이드' 카테고리의 다른 글
Fragment LifeCycle 메소드 호출 순서 (1) | 2015.05.05 |
---|---|
[Android] Fragment LifeCycle (프레그먼트 생명주기) (0) | 2015.03.27 |
CustomView 생성시 override 해야 할 function들 (0) | 2015.01.26 |
Android Studio Sign APK 만들기 (0) | 2015.01.08 |
서포트 라이브러리(v7)로 Material Design 적용하기 - (2) 색상 테마 적용 (0) | 2015.01.08 |
댓글