Android中通过Java获取Webview加载内容



有时候我们需要在加载webview时,获取加载完成的内容,当然,WebView也是有可能包含javascript。通过以下操作,我们是可以获取到WebView加载的内容。

1、自定义一个内部类,获取WebView加载的内容

class Handler {
public void show(String data) {  // 这里的data就webview加载的内容,即使页面跳转页都可以获取到,这样就可以做自己的处理了 
new AlertDialog.Builder(WebViewActivity.this).setMessage(data).create().show();
}
}


2、webview关键代码

// web页面处理
webpage.getSettings().setJavaScriptEnabled(true);// 支持javascript
webpage.addJavascriptInterface(new Handler(), "handler");  // 相当于在网页的js中增加一个handler类,实现java与WebView的js交互
webpage.loadUrl(webpage_url);		
webpage.setWebViewClient(new WebViewClient() {
			// 依然在webview打开新页面
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				view.loadUrl(url);
				return true;
			}

			@Override
			public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
				return super.shouldOverrideKeyEvent(view, event);
			}

			@Override
			public void onPageStarted(WebView view, String url, Bitmap favicon) {
				super.onPageStarted(view, url, favicon);
			}

			@Override
			public void onPageFinished(WebView view, String url) {
				// 通过内部类定义的方法获取html页面加载的内容,这个需要添加在webview加载完成后的回调中
				view.loadUrl("javascript:window.handler.show(document.body.innerHTML);");
				super.onPageFinished(view, url);
			}

			@Override
			public void onScaleChanged(WebView view, float oldScale,
					float newScale) {
				// TODO Auto-generated method stub
				super.onScaleChanged(view, oldScale, newScale);
				webpage.requestFocus();
				webpage.requestFocusFromTouch();
			}
		});


通过以上的操作,你就可以达到你需要的效果了。挺简单实用的


原文地址:https://www.cnblogs.com/aukle/p/3217782.html