美文网首页
2.1Js端调用Android端代码

2.1Js端调用Android端代码

作者: 琳媚儿 | 来源:发表于2019-11-06 20:59 被阅读0次

    二.JS端去调用Android原生代码

    JS端调用Android端代码有3种方法:
    2.1.通过WebView的addJavascriptInterface()进行对象映射
    2.2通过WebViewClient的shouldOverrideUrlLoading()方法回调拦截url
    2.3.通过WebChromeClient的onJsAlert()、onJsConfirm()、onJsPrompt()方法回调拦截JS对话框alert()、confirm()、prompt()消息

    2.1通过WebView的addJavascriptInterface()进行对象映射

    实例:

    1.先定义一个JS映射对象
    AndroidToJs类:

    public class AndroidToJs extends Object{
        @JavascriptInterface//处理漏洞
    
     public void hello(String s){
            return " " ;
        }
        @JavascriptInterface//处理漏洞
        public String work(String s){
            return "hello:"+s;
        }
    }
    
    

    invite.html:
    2.JavaScript内定义方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>我的第一个网页</title>
    </head>
    <body>
    <div>我的第一个网页</div>
    <button onclick="inviteBtn()">点我</button>
    <script>
       function call(msg){  
            document.querySelector('h1').innerHTML=msg;
            return "Hello"+msg;
        }
    </script>
    </body>
    </html>
    

    3.Android调用JavaScript方法
    webView.addJavascriptInterface(new AndroidToJS(),"app");

           webView=findViewById(R.id.web);
            WebSettings webSettings=webView.getSettings();
            webSettings.setJavaScriptEnabled(true);
            webView.getSettings().setDomStorageEnabled(true);//打开DOM存储API,如果不开口有可能网页显示不全
            webView.addJavascriptInterface(new AndroidToJs(),"app");//AndroidtoJS类对象映射到js的test对象
            webView.loadUrl("file:///android_asset/invite.html");
             button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    webView.evaluateJavascript("javascript:call('孙琳琳')", new ValueCallback<String>() {
                        @Override
                        public void onReceiveValue(String s) {
                            Toast.makeText(WebActivity.this,s,Toast.LENGTH_LONG).show();
                        }
                    });
                }
            });
    
    
    
    8be18397ffedd9c4da2266f962c45e3.jpg

    相关文章

      网友评论

          本文标题:2.1Js端调用Android端代码

          本文链接:https://www.haomeiwen.com/subject/gqepbctx.html