android WebView(三)WebViewClient
16lz
2021-01-26
WebView自己加载子页面
默认情况下,点击WebView所加载的页面上的超链接按钮时,是启动系统自带的浏览器去加载新的页面。如果要让WebView自己加载,需要添加如下代码:webView.setWebViewClient(new SelfWebViewClient());
SelfWebViewClient继承自WebViewClient,如下:
public class SelfWebViewClient extends WebViewClient {@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);//加载结束}@Overridepublic void onReceivedError(WebView view, int errorCode,String description, String failingUrl) {super.onReceivedError(view, errorCode, description, failingUrl);//在此处显示加载失败页面loadFailure.setVisibility(View.VISIBLE);}@Overridepublic void onLoadResource(WebView view, String url) {super.onLoadResource(view, url);//加载资源}@Overridepublic void onReceivedHttpAuthRequest(WebView view,HttpAuthHandler handler, String host, String realm) {super.onReceivedHttpAuthRequest(view, handler, host, realm);//webview保存密码}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);//开始加载页面}@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {//点击链接跳转,对网页中超链接按钮的响应。 view.loadUrl(url);return true}}
WebViewClient的一般生命周期如下:
如果加载成功
onPageStarted-->> onLoadResource-->>onPageFinished-->> onLoadResource
如果加载失败
onPageStarted-->>
onLoadResource-->>onReceivedError-->>onPageFinished-->>onPageFinished
WebViewClient的常见用途有三个:1、让WebView自己加载子页面;2、如果WebView加载失败显示失败页面;3、记住页面登录密码。这三个功能上面代码已经简单介绍了。
WebView从子页面返回
上面介绍了如何如何直接用WebView加载子页面,但是如何从子页面返回上一页面呢?这个需要有一个出发时间,我就用返回键来触发,代码如下:@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { webView.goBack(); //goBack()表示返回WebView的上一页面 return true; } else{ finish(); } return false; }
更多相关文章
- Android(安卓)仿联系人菜单,带字母索引,顶部挤压动画,recyclerview
- Android中WebViewClient与WebChromClient两个类的区别
- Android(安卓)4.2 API文档页面打开过慢的问题
- tabhost (activitygroup)中子页面弹出对话框
- IE 和android浏览器上页面图片加载判断
- Android(安卓)Studio 使用 System.loadLibrary()的一些问题
- Google Maps API v2密钥申请
- Webview里JS跳转到Activity页面
- Android(安卓)DataBinding+ViewModel+LiveData小Demo