Android開發-WebView(二)-setWebViewClient

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第20天,點選檢視活動詳情

上一篇文章介紹了webview的幾個屬性方法,以及簡單的使用,接下來我們詳細介紹了它的幾個屬性方法的使用,首先我們介紹的是setWebViewClient。

setWebViewClient 的定義及使用

setWebViewClient 在webview中的作用就是處理web頁面載入過程中各種內部請求或者載入過程中需要特殊處理的攔截事件處理,相比較WebChromeClient,它的作用大很多。先來看下它的內部實現方法有哪些。

官方的文件裡有很多的方法,具體如下:

image.png

但是實際開發過程中,我們真正使用到的常用的實現方法有三個:

shouldOverrideUrlLoading:這個方法官方的解釋:Give the host application a chance to take control when a URL is about to be loaded in the current WebView. If a WebViewClient is not provided, by default WebView will ask Activity Manager to choose the proper handler for the URL. If a WebViewClient is provided, returning true causes the current WebView to abort loading the URL, while returning false causes the WebView to continue loading the URL as usual.

其實通俗的解釋就是用來處理頁面重定向的url的回撥。舉個栗子:

``` @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.i(TAG, "當前載入的url:" + url); if (url.contains("test")) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); return true; } return false; }

``` 意思就是載入的地址中如有“test”,就處理掉。至於怎麼處理根據自己的業務來,我這邊處理是使用系統跳轉出去。這個方法可以幫助解決很多web開發過程中一些特殊需求的邏輯,頁面的重定向,頁面有電話資訊需要處理成APP開啟撥號介面等等。\ onPageStarted:這個方法很容易理解,就是在頁面載入開始的回撥,這個一般可以新增一些loading效果,或者提示資訊之類的。

onPageFinished:很onPageStarted是一對方法,表示在頁面載入完成的回撥,這個方法也可以用來處理一些特殊場景的業務。具體實現的功能根據自己的業務需要來處理。

setWebViewClient還有其他的一些相對常用的實現方法:onLoadResoure(載入Url資源回撥)、shoudIdInterceptRequest(攔截url請求回撥)、onReceivedError(頁面地址載入錯誤回撥)、onReceivedSsslError(頁面載入SSL錯誤回撥)等等,每個實現的方法大家都可以常識去實現,看看具體的作用,這裡不一一做解釋,具體使用還是要根據自己的業務來。