使用WebView記得加上網絡權限
javascript
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
後退鍵網頁後退而不是退出java
@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 內部數據android
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數據監聽接口web
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另外一個對象ide
mWebView.setWebChromeClient(new MyWebChromeClient()); ui
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); } }