使用WebView记得加上网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
后退键网页后退而不是退出
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); }
设置获取WebView 内部数据
webView.getSettings().setJavaScriptEnabled(true); //可以获取js数据 webView.addJavascriptInterface(new Handler(), "handler"); //js数据的监听接口 //监听接口里 显示出网页数据 class Handler { public void show(String data) { //data 就是网页数据 Toast.makeText(WebViewActivity.this, "执行了handler.show方法", 0).show(); new AlertDialog.Builder(WebViewActivity.this).setMessage(data).create().show(); } }
这个在页面加载完成后调用 onPageFinished() handler js数据监听接口
view.loadUrl("javascript:window.handler.show(document.body.innerHTML);");
在WebView中跳转
mWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边 view.loadUrl(url); return true; } //页面加载完成 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); } });
在WebView 加载进度显示 WebChromeClient另一个对象
mWebView.setWebChromeClient(new MyWebChromeClient());
final class MyWebChromeClient extends WebChromeClient { //进度显示 @Override public void onProgressChanged(WebView view, int newProgress) { // TODO Auto-generated method stub super.onProgressChanged(view, newProgress); System.out.println(newProgress); //当前加载进度 } @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); } }