webView.addJavascriptInterface(new JsInter(WebViewActivity.this), "whb");

第1个参数:js调用Android(java)本地方法的对象;
第2个参数:对象的名字,js主要通过这个名字来拿到第1个参数的对象,从而调用android(java)的本地方法。

android读取js的meta
1. 确定meta中需要读取的内容
   例如:包含2个mete
   <meta name=add content=1><meta name=share content=0>
2. 设置mWebView.setWebViewClient(new BaseWebViewClient());
3. onPageFinished方法里,读取meta信息
    private class BaseWebViewClient extends WebViewClient {

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            String rightButton = "javascript:window." + JS_ALIAS + ".setRightFunction(" + "document.querySelector('meta[name=\"share\"]').getAttribute('content')" + ",document.querySelector('meta[name=\"add\"]').getAttribute('content')" + ");";
            view.loadUrl(rightButton);
        }
    }
4. JS_ALIAS是别名,自己确定名字,js要知晓
5. setRightFunction该方法名自己确定,只要在webView.addJavascriptInterface(new JsInterface(WebViewActivity.this),JS_ALIAS);中JsInterface对象下显示即可
6. JsInterface对象下代码如下:
    @JavascriptInterface
    public void setRightFunction(String share, String add) {
        //根据自己逻辑处理
        if ("1".equals(share)) {
            refreshUI.sendEmptyMessage(SHARE);
        } else if ("1".equals(add)) {
            refreshUI.sendEmptyMessage(ADD);
        }
    }
7. 第6步方法的参数个数要和第3步中onPageFinished里请求个数一致(即n个meta就是n个参数)    
 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐