内部类handler
class Handler {
public void show(String data) {
Toast.makeText(WebViewActivity.this,
data, 0).show();
}
}
webview 设置
webView = new WebView(this);
setContentView(webView);
webView.loadUrl(“ http://www.baidu.com “);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new Handler(), “handler”);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
Toast.makeText(WebViewActivity.this, “网页加载完成”, 0).show();
view.loadUrl(“javascript:window.handler.show(document.body.innerHTML);”);
super.onPageFinished(view, url);
}
});
这是网络上普遍的说法,但是实际使用中,只有taget小于4.2.2的时候才有效,
在高版本的android中,需要在show方法前面添加@JavascriptInterface标记
然后代码才能生效
网上的代码全都没给这关键的标记,让大多数人走了弯路