반응형
목적:
웹(javascript)에서 네이티브를 호출하기 위해서는, 안드로이드에서 @JavascriptInterface 에 해당하는 안드로이드 브릿지(bridge)를 연결 해줘야 한다.
구현방법:
MyAndroidBridge.java
package com.example.mywebview;
import android.util.Log;
import android.webkit.JavascriptInterface;
public class MyAndroidBridge {
@JavascriptInterface
public void call_log(String msg){
Log.i(getClass().getName(),"call_log() msg:"+ msg);
}
}
MainActivity.java
this.mWebView = findViewById(R.id.webView);
MyAndroidBridge myAndroidBridge = new MyAndroidBridge(); //자바스크립트인터페이스의 모음
this.mWebView.addJavascriptInterface(myAndroidBridge,"aos"); //window.aos.call_log("log test")
mWebView.getSettings().setJavaScriptEnabled(true); // 자바스크립트 사용 허용!!
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
MyHome.html
<html>
<head>
<meta charset="utf8">
<script type="text/javascript">
click_b = function(){
console.log("click_b 함수호출")
alert("click_b 함수호출");
}
</script>
</head>
<body>
Android(aos) 호출 관련 (bridge는 aos)
<br>
<input type="button" value="aos.call_log('로그가 전달 되나?') 함수호출" onclick="window.aos.call_log('로그가 전달 되나?')"/> <br>
</body>
</html>
결과:
프로젝트 코드:
참고자료:
[1] html javascript 구현,
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tkddlf4209&logNo=220512073357
[2]안드로이드 로컬(assets) html 불러오기,
[3] Android javascript bridge 연결,
https://jhappy.tistory.com/entry/android-자바스크립스-브릿지-연결하기-Javascript-bridge펌
[4] Android javascript 연결 심화, https://royzero.tistory.com/25
반응형
'안드로이드' 카테고리의 다른 글
[Android] 리싸이클러 뷰 구현하기. (0) | 2021.10.04 |
---|---|
[Android] Android local html 불러오기 (web으로 callback) (4/4) (0) | 2021.09.30 |
[Android] Anroid local html 불러오기 (assets/www/MyHome.html 호출) (2/3) (0) | 2021.09.29 |
[Android] Anroid local html 불러오기 (javaScript onclick 구현) (1/3) (0) | 2021.09.29 |
[Android] Webview에서 URI_INTENT_SCHEME 오류 (0) | 2021.09.29 |