內部類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標記
然後代碼才能生效
網上的代碼全都沒給這關鍵的標記,讓大多數人走了彎路