Android中使用WebView來顯示網頁內容。使用WebView需要下面幾個步驟:
1、在Android.manifest中添加訪問互聯網的權限:
首先要在manifest.main文件中創建一個webview,然後再activity中定義這個webview然後進行一下相關操作。
1、添加權限:AndroidManifest.xml中必須使用許可"android.permission.INTERNET",否則會出Web pagenot available錯誤。
2、在要Activity中生成一個WebView組件:WebView webView = newWebView(this);
3、設置WebView基本信息:
如果訪問的頁面中有Javascript,則webview必須設置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
觸摸焦點起作用
requestFocus();
取消滾動條
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4如果希望點擊鏈接由自己處理,而不是新開Android的系統browser中響應該鏈接。給WebView添加一個事件監聽對象(WebViewClient)並重寫其中的一些方法 shouldOverrideUrlLoading:對網頁中超鏈接按鈕的響應。
當按下某個連接時WebViewClient會調用這個方法,並傳遞參數:按下的url
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
6、如果頁面中鏈接,如果希望點擊鏈接繼續在當前browser中響應,而不是新開Android的系統browser中響應該鏈接,必須覆蓋webview的WebViewClient對象:
7、如果不做任何處理,在顯示你的Brower UI時,點擊系統“Back”鍵,整個Browser會作爲一個整體“Back"到其他Activity中,而不是希望的在Browser的歷史頁面中 Back。如果希望實現在歷史頁面中Back,需要在當前Activity中處理並消費掉該Back事件:
1、public void onBackPressed() {
2、 // 這裏處理邏輯代碼,該方法僅適用於2.0或更高版本的sdk
3、 return ;
4、}
這裏還有幾個知識點:
1)爲了讓WebView從apk文件中加載 assets,Android SDK提供了一個schema,前綴爲"file:///android_asset/"。WebView遇到這樣的schema,就去當前包中的 assets目錄中找內容。如上面的"file:///android_asset/demo.html"
2)addJavascriptInterface方法中要綁定的 Java對象及方法要運行另外的線程中,不能運行在構造他的線程中,這也是使用Handler的目的。
加上進度條:
-
webView.setWebChromeClient(new WebChromeClient()
-
{
-
public void onProgressChanged(WebView view, int progress)
-
{
-
activity.setTitle("Loading...");
-
activity.setProgress(progress * 100);
-
if(progress == 100)
-
activity.setTitle(R.string.app_name);
-
}
-
}
- );