从 android WebView 访问元数据

Access Meta Data from android WebView

如何在 Android 中访问加载到 WebView 中的 HTML 页面的元数据?

我搜索了 whosebug.com 和 google 小时,但找不到任何答案。

我只能通过此代码获得 url 和标题:

webView.getTitle();
webView.getUrl();

怎么办,webview不支持?

不要打开 WebView 中的 URL。

首先。开一个HttpURLConnection到URL。读取服务器的输出,您可以扫描服务器响应以找到您的元数据。

当您读取服务器输出时,将数据写入缓冲区,然后使用 loadData 而不是 loadUrlWebView[=15= 中显示缓冲数据]

如果它是您自己的网页,那么您可以使用以下代码将元描述或任何文本传递到您的应用:

public class WebAppInterface {

    @JavascriptInterface
    public void setDesc(String desc) {
        mDescription = desc;
    }
}

然后给WebView添加JS接口:

webView.addJavascriptInterface(new WebAppInterface(), "Android");

最后,在您的网页中添加以下代码:

<script type="text/javascript">    
    Android.setDesc("Your meta tag desc here");
</script>

https://developer.android.com/guide/webapps/webview.html

阅读更多内容

您可以通过以下简单方法解决问题:

private class JsInterface {
    @JavascriptInterface
    @SuppressWarnings("unused")
    public void processHTML(String content) {
    //handle content
    }
}


mWebView.addJavascriptInterface(new JsInterface(), "CC_FUND");

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        mWebView.loadUrl("javascript:window.CC_FUND.processHTML( (function (){var metas = document.getElementsByTagName('meta'); \n" +
                "\n" +
                "   for (var i=0; i<metas.length; i++) { \n" +
                "      if (metas[i].getAttribute(\"name\") == \"description\") { \n" +
                "         return metas[i].getAttribute(\"content\"); \n" +
                "      } \n" +
                "   } \n" +
                "\n" +
                "    return \"\";})() );");
        super.onPageFinished(view, url);
    }
}