android webview獲取網頁內容,高版本api解決辦法

內部類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標記

然後代碼才能生效

網上的代碼全都沒給這關鍵的標記,讓大多數人走了彎路

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章