본문 바로가기
안드로이드

Android WebView javascriptInterface

by 뇽꾸리 2022. 4. 1.
반응형

참고문서 => https://developer.android.com/guide/webapps/webview#EnablingJavaScript

 

WebView에서 웹 앱 빌드  |  Android 개발자  |  Android Developers

WebView에서 웹 앱 빌드 웹 애플리케이션 또는 웹페이지만 클라이언트 애플리케이션의 일부로 제공하려는 경우 WebView를 사용하면 됩니다. WebView 클래스는 Android의 View 클래스의 확장으로, 웹페이

developer.android.com

public class MyWebView extends WebView {

    private MainActivity mActivity;
    private WebView webView;

    public MyWebView(MainActivity activity) {
        super(activity);
        mActivity = activity;
        this.webView = mActivity.findViewById(R.id.webView);
        setWebSetting();

    }

    /* 웹 세팅 작업 */
    public void setWebSetting(){
        this.webView.getSettings().setJavaScriptEnabled(true);
        this.webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        this.webView.getSettings().setUseWideViewPort(true);
        this.webView.getSettings().setSupportMultipleWindows(true);

        /* local setting */
        this.webView.getSettings().setAllowFileAccess(true);
        this.webView.getSettings().setAllowContentAccess(true);
        //webView.loadUrl("file:///android_asset/test.html");*/

        /* redirect 할 때 브라우저 열리는 것 방지 */
        webView.setWebViewClient(new WebViewClient());
        webView.setWebChromeClient(new WebChromeClient());

        /* url */
        webView.loadUrl("http://ec2-15-165-243-69.ap-northeast-2.compute.amazonaws.com:8080");

        /* javascript interface 사용 */
        webView.addJavascriptInterface(new WebAppInterface(mActivity), "AndroidClient");


    }
}

 

public class WebAppInterface {
    Context mContext;

    public WebAppInterface(Context c) {
        mContext = c;
    }

    @JavascriptInterface
    public void goBack() {
        Log.d("test ", "goBack: clicked ################");
    }
}

 

 

웹에서 뭐 doucment.querySelector('#id').addEventListener('click',()=>{
  AndroidClient.goBack();
})

이런 코드가 있으면 자바스크립트인터페이스 저 코드를 탄다. 

반응형

댓글