从Android WebView访问元数据

时间:2015-07-22 20:41:55

标签: android webview meta-tags

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

我搜索了几个小时的stackoverflow.com和google,而我没有找到任何答案。

我只能通过此代码获取网址和标题:

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

剂量是不可能的,webview不支持它?

3 个答案:

答案 0 :(得分:2)

不要在WebView

中打开网址

首先。打开网址HttpURLConnection。从服务器读取输出,您可以浏览服务器响应以查找元数据。

在阅读服务器输出时,将数据写入缓冲区,然后使用loadData代替loadUrl来显示WebView

中的缓冲数据

答案 1 :(得分:1)

您可以通过这种简单的方法解决问题:

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);
    }
}

答案 2 :(得分:0)

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

public class WebAppInterface {

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

然后将JS接口添加到WebView:

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

了解详情