-
[Android] Javascirpt에서 Android 함수 호출하기Developer/HTML+Script 2013. 8. 14. 16:33
WebView 안에서 자바스크립트 함수를 호출하여 액티비티 안의 함수를 호출할 수 있다.
새로운 액티비티를 호출하거나 데이터를 fetch할 때 사용된다.
- 자바스크립트 인터페이스 클래스 만들기
- WebView 에 인터페이스 클래스 등록하기
- Javascript에서 Android 함수 호출하기
1. 자바스크립트 인터페이스 클래스 만들기
WebView 에 등록할 인터페이스를 만든다. 인터페이스의 함수는 자바스크립트에서 호출할 때 사용된다.
final class MyJavaScriptInterface { MyJavaScriptInterface() { } /** * This is not called on the UI thread. Post a runnable to invoke * loadUrl on the UI thread. */ public void callAndroid(final String str) { mHandler.post(new Runnable() { public void run() { textView.setText(str); } }); } }
2. WebView 에 인터페이스 클래스 등록하기
WebView 에 자바스크립트 인터페이스 클래스를 등록하고 이름을 준다. webview.addJavascriptInterface(new MyJavaScriptInterface(), "myJs");
123456789101112131415public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(com.misun.samples.R.layout.sample07_a);
webview = (WebView)findViewById(com.misun.samples.R.id.s07_webview);
textView = (TextView)findViewById(com.misun.samples.R.id.s07_textview);
WebSettings webSet = webview.getSettings() ;
webSet.setJavaScriptEnabled(
true
) ;
webSet.setBuiltInZoomControls(
true
);
webview.addJavascriptInterface(
new
MyJavaScriptInterface(),
"myJs"
);
}
3. Javascript에서 Android 함수 호출하기
자바스크립트에서 인터페이스 함수를 호출한다. window.myJs.callAndroid(str);
1234function
callAndroid(){
var
str = myFrm.mytxt.value;
window.myJs.callAndroid(str);
}
1234567<
form
id
=
"myFrm"
action
=
""
>
<
input
id
=
"mytxt"
type
=
"text"
>
<
button
onclick
=
"javascript:callAndroid()"
>호출하기</
button
>
</
form
>
실행화면
Webview의 입력창에 글자를 입력하고 버튼을 누르면 상단 TextView 에 해당글자가 나타난다.
참고자료
'Developer > HTML+Script' 카테고리의 다른 글
[CSS] Public 선언 (0) 2013.08.20 [JQuery] Plugin 만들기 (0) 2013.08.20 [JQuery] Ajax (0) 2013.08.12 jQuery 샘플 (0) 2013.05.06 [ajax, web] 성능관리 (0) 2013.03.13