国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

WebView設置WebViewClient的方法

2019-12-12 01:58:44
字體:
來源:轉載
供稿:網友

WebView設置WebViewClient的方法

shouldOverrideUrlLoading:

在web頁面里單擊鏈接的時候,會自動調用android自帶的瀏覽器來打開鏈接,需要通過該方法在本頁面打開;

 @Override  public boolean shouldOverrideUrlLoading(WebView view, String url) {  view.loadUrl(url);  return true;  }
onLoadResource:加載資源時響應onPageStart:在加載頁面時響應onPageFinish:在加載頁面結束時響應onReceiveError:在加載出錯時響應onReceivedHttpAuthRequest:

公共方法

doUpdateVisitedHistory(WebView view,String url,boolean isReload)

通知主機應用程序更新其訪問數據庫的鏈接。(貌似可以理解成WebView內容變化后,數據庫儲存的歷史記錄也變化了,需要更新)

onFormResubmission(WebView view,Message dontResend,Message resend)

在應用程序中,如果瀏覽器需要重新加載頁面數據,這個頁面必須是屬于POST請求,默認情況下,是不會發送重新加載數據.

onLoadResource(WebView view,String url)

當WebView加載特定的資源時,會通知WebView所請求的Url.

onPageCommitVisible(WebView view,String url)

(1)通知應用程序,WebView之前頁面遺留的內容,將不會在加載和繪制.

(2)這個回調被使用在WebView內容安全的回收,確保不會顯示陳舊的內容.

(3)它能夠在最早被調用,以此來保證onDraw(Canvas)在以前的界面不會繪制任何內容,接下來需要繪制的內容background color或者需要加載的新內容.

(4)這個方法會在Http的Body已經加載,已經反映在DOM上,并且將會在其可見的時候繪制.這個回調發生在文檔(document)加載的早期,因此它的資源(css,和圖像)可能是拿不到的.

(5)如果需要更細粒度的視圖更新,具體到元素,<標簽/>,需要了解postVisualStateCallback(long, WebView.VisualStateCallback).

(6)請注意這上邊的所有條件也支持postVisualStateCallback(long ,WebView.VisualStateCallback)   

void onPageFinished(webView view,String url)

通知應用程序頁面已經完成加載,只有主框架才能調用此方法,當onPageFinish()被調用時,呈現圖片可能還沒有被更新.新照片的通知更新,請使用onNewPicture(WebView,Picture)

onPageStarted(WebView view,String url,Bitmap favicon)

通知應用程序已經開始進行頁面加載,這個方法,在每個主框架加載一個頁面或者一個內置頁框都會被調用.這也意味著onPageStarted將不會發生在嵌入式的框架內的內容變化,就像單擊鏈接目標.

onReceivedClientCertRequest(WebView view,ClientCertRe)

通知應用程序來處理一個SSL客戶證書請求,應用程序負責提示用戶輸入鑰匙.

有三種處理方式:

進行proceed()

取消cancel()

無視ignore()

WebView將會儲存在響應內存(特指App還存活)的進行(proceed)和取消(cancel)的操作,并且onReceivedClientCertRequest()在遇到相似的host和port,不會對用戶進行通知,但是無視(ignore)狀態在WebView中不會儲存,下次還會繼續提示.

注意:

(1)谷歌的Chromium(引擎)可能會緩存這些響應,所以當前情況下,忽略可能是影響最小的一個選擇.

(2)如果在UI線程使用,這個連接可能被暫停.

(3)在大多數情況,這個應用程序項目,應該實現KeyChainAliasCallback這個接口,并且將這個接口傳遞給choosePrivateKeyAlias(Activity,KeyChainAliasCallback,String[],Principal[],Uri,String)并且給User(用戶)選擇一個別名來開始這個活動.

(4)這個活動的鑰匙串將通過接口回調的方式實現.

(5)下一個App應該通過創建一個異步任務通過getPrivateKey(Context,String)方法來獲得這個(Key)鑰匙.

(6)這個方法在AOSP瀏覽器的默認行為是取消(cancel),并且不返回客戶端證書.

在API 23被遺棄.

onReceivedError(WebView view,int errorCode,String descrption,String failingUrl)

向應用程序報告錯誤,這個錯誤都是不可恢復的(這些資源不可以被使用).errorCode參數對應一個ERROR_*常量.

onReceiver(Webview view,WebResourceRequest request,WebResourceError error)

向應用程序報告Web資源加載錯誤.這些錯誤通常會顯示無法連接到服務器,回調時注意與棄用版本,新版本將針對任何資源(iframe,picture),不僅針對主頁面,因此,建議在這個回調上執行加載資源錯誤的 通用的處理情況.

onReceivedHttpAuthRequest(Webview view.HttpAuthHandler handler,String host,String realm)

通知應用程序接收WebView上面的HTTP身份驗證請求.應用程序可以使用提供的HttpAuthHandler來設置對WebView上面請求的回應.默認的行為是取消請求.

onReceivedHttpError(WebView view,WebResourceRequest request,WebResourceResponse errorResponse)

通知App在從服務器端接收到HTTP錯誤,并且==HTTP的錯誤狀態碼>=400==,這個回調將對任何資源(iframe,picture等)不僅對主頁面.因為,建議在這個回調上面執行最普遍的處理,處理通用事件.

==注意:服務器響應的內容可能在errorResponse中找不到.==

onReceivedLoginRequest(Webview view,String realmString accountString args)

通知應用程序自動用戶登錄已經被處理.

onReceiverSslError(WebView view,SslErrorHandler handlerSslError error)

通知應用程序加載資源時發生SSL錯誤,主機應用程序必須調用handler.cancel()或者handler.proceed().注意,這個決定可能被保留應對未來的SSL錯誤,默認的行為是取消(cancel)加載.

onScaleChange(WebView view,float oldScale,float newScale)

通知APP對于WebView的比例大小已經發生變化.

onUnhandledKeyEvent(WebView view,KeyEvent event)

通知應用這個事件沒有在WebView聲明,除了系統事件,WebView總是消費普通的事件,或者設置shouldOverrideKeyEvent方法返回值為true.

這個事件的發出,屬于異步的發出,它給應用程序機會來處理這些不能處理的關鍵性事件.

WebResourceResponse shouldInterceptRequest(WebView view,WebResourceRequest request)

通知應用程序一個資源請求,并且允許應用程序返回數據.如果返回值為null,這個WebView將會繼續加載普通的資源請求.否則,返回響應的數據將會被使用.

注意:這個方法將在非主線程調用.所以客戶端在訪問私有數據或者UI視圖時需要謹慎行事.

boolean shouldOverrideKeyEvent(WebView view,KeyEvent event) 

賦予應用程序能夠處理異步事件的機會.

eg:菜單的快捷鍵需要先被過濾.

如果方法返回true,WebView將不會處理該事件,如果返回false,那么WebView將會一直處理該事件,所以沒有超級鏈接也能看到該事件.

這個默認行為是返回false.

shouldOverrideUrlLoading(WebView viewWebResourceRequest request)

使主機應用程序能夠控制,當一個新的Url加載到當前的WebView.

如果沒有提供WebViewClient,默認情況下WebView會詢問Activity Manager 去選擇來適當的處理當前的Url,如果WebViewClient被提供,返回true,意味著主機程序來處理url,而返回false意味著當前WebView處理url.

如有疑問請留言或到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新密市| 丰原市| 桐城市| 仙桃市| 黎平县| 夏河县| 望城县| 福泉市| 德令哈市| 隆林| 延川县| 湘乡市| 新乡市| 长寿区| 南充市| 天峨县| 昭觉县| 西安市| 盈江县| 枣阳市| 蒙阴县| 柳林县| 京山县| 铅山县| 阿拉善左旗| 华亭县| 昭平县| 七台河市| 湛江市| 高阳县| 琼中| 顺平县| 凤庆县| 平凉市| 秦安县| 宁津县| 武威市| 邯郸市| 龙陵县| 法库县| 商南县|