출처: http://blog.daum.net/gyoju12/49
1. Android에서 Javascript함수 호출하기
webView.loadUrl("javascript:callJS('Hello from Android')");
다음과 같은 방식으로 javascript:methodname 과 같은 문자열을 넣어 WebView.loadUrl 메소드의 인자로 호출한다.
|
2. Javascript에서 Android 호출하기
/** Object exposed to JavaScript */
private class AndroidBridge {
public void callAndroid(final String arg) { // must be final
handler.post(new Runnable() {
public void run() {
Log.d(TAG, "callAndroid(" + arg + ")");
textView.setText(arg);
}
});
}
}
다음과 같이 브릿지 역활을 할 Class를 만든다.
WebView의 세팅을 바꾸고
webView.getSettings().setJavaScriptEnabled(true);
WebView에 Javascript Interface를 추가해준다.
webView.addJavascriptInterface(new AndroidBridge(),"android2");
HTML페이지에서 다음과 같은 방식으로 호출한다.
window.android2.callAndroid('Hello from Browser')
android2는 addJavascriptInterface의 두번째 인자와 같다.
3. Javascript Listener 걸기
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(final WebView view,
final String url, final String message,
JsResult result) {
Log.d(TAG, onJsAlert(!" + view + ", " + url + ", "
+ message + ", " + result + ")");
Toast.makeText(LocalBrowser.this, message, 3000).show();
result.confirm!();
return true; // I handled it
}
});
다음과 같이 WebView의 setWebChromeClient를 이용한다.
위 예제는 Javascript의 alert메소드 발생시 이벤트이다.
출처: http://lonelycat.tistory.com/447
Android
public class LocalBrowser extends Activity { // 즉, 브라우저 처리을 할 클라이언트를 등록 { |
WebView
<html> Display JavaScript alert </a>
</a> |
addJavascriptInterface() 에서 설정한 DOM명칭 "android"로 WebView에서 호출가능하다.
- final 매개변수를 잘 사용하자.
메소드 내에서 변경하면 안되는 값(주소값)일 경우에 사용하면 유용할 듯
'IT_Programming > Android_Java' 카테고리의 다른 글
[펌] 안드로이드 애플리케이션 개발을 위한 10가지 팁 (0) | 2013.05.17 |
---|---|
[Tip] 폰과 태블릿 구별하기 (0) | 2013.02.05 |
[펌] 웹뷰 (WebView) 또는 기타 > 기본 폰트 및 외부폰트를 적용하는 방법 관련 (0) | 2013.01.30 |
[Android] Telephony (0) | 2013.01.16 |
Android Settings를 통한 AirplaneMode 예제 코드 (0) | 2013.01.09 |