码迷,mamicode.com
首页 > Web开发 > 详细

webview 获取网页上的数据

时间:2015-04-24 12:35:20      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

最近做webview,遇到2种需求,一种是在自己服务器上的HTML中获取数据,另一种是通过自己服务器上的HTML中的超链接跳到另一个站点的HTML中,并获取数据。

于是,总结了2种通过webview获取网页上的数据的方式:

第一种:简单点的,直接通过js调java,在调用方法的过程中将数据通过方法的参数传递给Android端,(前提:服务端有对应的faxun对象,而且调用的方法是showImages(String[] imgUrls))。

<span style="font-size:18px;">class MyJavaScriptInterface {

        MyJavaScriptInterface() {
        }

        /**
         * js调java,显示图片
         *
         * @param imgUrls
         */
        @JavascriptInterface
        public void showImages(String[] imgUrls) {
            LogUtils.i(TAG, "imgUrls = " + imgUrls[0]);
            NewsDetailWebviewActivity.this.imgUrls = imgUrls;
        }
}

...
webView.addJavascriptInterface(new MyJavaScriptInterface(), "faxun");</span>

第二种:有点复杂,通过webview注册一个本地接口后,然后通过java调js,拿到document对象后,解析HTML标签,然后数据会通过本地接口中的回调方法传递给Android端,(前提:HTML页面中的meta标签中有对应的reply_info名称和content属性,数据是封装在content里面的json格式的字符串
)。

<span style="font-size:18px;">class MyWebClient extends WebViewClient {
@Override
        public void onPageFinished(WebView view, String url) {
            view.loadUrl("javascript:window.getShareData.OnGetShareData("
                    + "document.querySelector('meta[name=\"reply_info\"]').getAttribute('content')" + ");");
            super.onPageFinished(view, url);
        }
}

private class GetShareDataInterface {
        @JavascriptInterface
        public void OnGetShareData(String shareData) {
            if (null != shareData) {
                try {
                    JSONObject shareJson = new JSONObject(shareData);
                    title = shareJson.optString("title");
                    description = shareJson.optString("description");
                    imageUrl = shareJson.optString("imageUrl");
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }
    }

.....
webView.setWebViewClient(new MyWebClient());

</span>


其实,如果是普通的需求,两种方式都可以解决问题,但是如果是有些HTML没有做js调java,只是个普通的HTML,并且需要获取页面上的数据时,只能通过第二种方式来获取HTML上的数据了,比如获取HTML上的title等等。

webview 获取网页上的数据

标签:

原文地址:http://blog.csdn.net/y_chengyong/article/details/45244071

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!