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

本文介绍了如何在Android中通过Java获取WebView加载的完整内容,包括处理可能存在的JavaScript。通过自定义内部类来监听和获取WebView的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候我们需要在加载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();
			}
		});

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值