안드로이드

[Android] Anroid local html 불러오기 (android bridge 구현) (3/4)

IT꿈나무 2021. 9. 29. 19:24
반응형

목적:

웹(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>

결과:

프로젝트 코드:

 

MyWebView (2).zip
0.36MB

참고자료:

[1] html javascript 구현,

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tkddlf4209&logNo=220512073357 

[2]안드로이드 로컬(assets) html 불러오기, 

https://dev.eyegood.co.kr/entry/Android-Local-Html-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0assets%ED%8F%B4%EB%8D%94%EC%83%9D%EC%84%B1-webview%EC%9D%B4%EC%9A%A9

[3] Android javascript bridge 연결,

https://jhappy.tistory.com/entry/android-자바스크립스-브릿지-연결하기-Javascript-bridge펌

[4] Android javascript 연결 심화, https://royzero.tistory.com/25

 

 

 

반응형