标签:
最近做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><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等等。
标签:
原文地址:http://blog.csdn.net/y_chengyong/article/details/45244071