您的位置:首页 > 移动开发

安卓获取webview加载的内容

2018-03-10 18:10 453 查看
在页面加载webView,进行初始化设置@SuppressLint("SetJavaScriptEnabled")
private void initWebView() {
    webView.getSettings().setJavaScriptEnabled(true);
    webView.addJavascriptInterface(new InJavaScriptLocalObj(),"java_obj");
    webView.loadUrl(url);
    // 给WebView设置监听
    webView.setWebViewClient(new WebViewClient() {
        //跳转连接
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // 所有连接强制在当前WeiView加载,不跳服务器
            webView.loadUrl(url);
            return true;
        }

        //加载结束
        @Override
        public void onPageFinished(WebView view, String url) {

            // 获取页面内容
            view.loadUrl("javascript:window.java_obj.showSource("
                   
+ "document.getElementsByTagName('html')[0].innerHTML);");

            // 获取解析<meta name="share-description"content="获取到的值">
            view.loadUrl("javascript:window.java_obj.showDescription("
                   
+ "document.querySelector('meta[name=\"share-description\"]').getAttribute('content')"
                   
+ ");");
            super.onPageFinished(view,url);
        }
    });
}

public final class InJavaScriptLocalObj
{
    @JavascriptInterface
    public void showSource(String html) {
        System.out.println("====>html="+ html);
    }

    @JavascriptInterface
    public void showDescription(String str) {
        System.out.println("====>html="+ str);
    }
}即可在showSource()方法里面获取到webView加载的内容了
注意:安卓端声明的 java_obj要和webView注入时
view.loadUrl("javascript:window.java_obj.showSource("
                   
+ "document.getElementsByTagName('html')[0].innerHTML);");
里的window.java_obj保持一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: