http://fecbob.pixnet.net/blog/post/35642367-android-webview%E7%9A%84%E4%BD%BF%E7%94%A8%E3%80%80%E7%80%8F%E8%A6%BD%E7%B6%B2%E9%A0%81 Aug 24 Wed 2011 Android WebView的使用 瀏覽網頁 分享: 7Headlines facebook PLURK twitter * 通過WebSettings設置WebView的一些屬性、狀態。通過webView.getSettings獲得 例如:setAllowFileAccess(是否能訪問檔資料) setBuiltInZoomControls(設置是否支援縮放)、 setCacheMode(設置緩衝的模式) setJavaScriptEnabled(設置是否支援JavaScript)........ * 通過WebViewClient來自訂網頁流覽程式。專門輔助WebView處理各種通知、請求等事件的類。 通過webView.setWebChromeClient獲得 方法: doUpdateVisitedHistory (更新歷史記錄) onFormResubmission(應用程式重新請求網頁數據) onLoadResource(載入指定位址提供的資源) onPageFinished(網頁載入完畢) onPageStarted(網頁開始載入) onReceivedError(報告錯誤資訊) onScaleChanged(WebView發生改變) shouldOverrideUrlLoading(控制新的連接在當前WebView中打開) * WebChromeClient專門用來輔助WebView處理JavaScript的對話方塊、圖示、網站標題、載入進度等。 方法:onCloseWindow(關閉WebView) onCreateWindow(創建WebView) onJsAlert(處理Js中的Alert對話方塊)、onJsConfirm(處理Js中的Confirm對話方塊)、onJsPrompt(處理JS中的Prompt對話方塊) onProgressChanged(載入進度條改變) onReceivedIcon(網頁圖示更改) onReceivedTitle(網頁標題更改) onRequestFocus(WebView顯示焦距) package com.dan; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.view.Window; import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.URLUtil; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.EditText; public class WebActivity extends Activity { private WebView webView; private EditText urlEdt; private Button btn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web); urlEdt = (EditText)findViewById(R.id.edt_1); btn = (Button)findViewById(R.id.btn_1); webView = (WebView)findViewById(R.id.web); WebSettings settings = webView.getSettings(); //webView.loadUrl("http://10.0.2.2/affiliate/code/login.php"); //設置支援Js腳本 settings.setJavaScriptEnabled(true); //設置可以訪問檔 settings.setAllowFileAccess(true); //支援縮放 settings.setBuiltInZoomControls(true); //設置WebViewClient webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } }); //設置WebChromeClient webView.setWebChromeClient(new WebChromeClient(){ @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { AlertDialog.Builder alert = new AlertDialog.Builder(WebActivity.this); alert.setTitle("提示對話方塊"); alert.setMessage(message).setPositiveButton("確定", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); alert.create().show(); return true; } @Override public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { return super.onJsConfirm(view, url, message, result); } @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { return super.onJsPrompt(view, url, message, defaultValue, result); } @Override public void onProgressChanged(WebView view, int newProgress) { WebActivity.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress*100); super.onProgressChanged(view, newProgress); } @Override public void onReceivedTitle(WebView view, String title) { WebActivity.this.setTitle("中國世貿通加盟管理登錄頁"); super.onReceivedTitle(view, title); } }); btn.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v) { String url = urlEdt.getText().toString(); if( URLUtil.isNetworkUrl(url) ){ webView.loadUrl(url); }else{ urlEdt.setHint("輸入的網址錯誤,請重新輸入"); } } }); } } * 後退 和 前進 canGoBack 與canGoForward //後退 if( (keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack() ){ webView.goBack(); return true; } 將Html代碼通過String的形式被載入到WebView中,而且在Html中可以引用存儲在設備中的圖片資源等。這個方式可以非常方便的實現RichTextField的效果,尤其是對某些程式提供一些本地的簡單文檔時,非常方便。 下邊是實現這個功能的原始程式碼: public void loadHTML() { final String mimeType = "text/html"; final String encoding = "utf-8"; final String html = "

Header

Custom HTML

"; WebView wv = (WebView) findViewById(R.id.wv1); wv.loadDataWithBaseURL("fake://not/needed", html, mimeType, encoding, ""); } //wView.loadUrl("file:///android_asset/index.html"); -----打開本包內asset目錄下的index.html檔 //wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html"); -----打開本地sd卡內的index.html檔 //wView.loadUrl("http://wap.baidu.com"); -----打開指定URL的html檔 ......webView.setInitialScale(30); //這個就是重點,你可以在這裡根據需求來設置縮放比例