看了好多网上的例子,但都是千篇一律,没有什么深入的东西,其他的就不介绍了,可以上网搜,这里主要介绍
WebViewClient在处理URL时的一些控制问题,例如,有些恶意的URL连接我们想进行屏蔽了。直接粘代码。
// WebViewClient里面封装了加载URL结果的所有信息,可以重写相对应的方法获取
webView.setWebViewClient(new WebViewClient() {
// 接在页面出现错误是调用
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
Toast.makeText(getApplicationContext(),
"Sorry! " + description, 3000).show();
}
// shouldOverrideUrlLoading() 理解起来是开发者可以自己控制新的URL处理方式,
// 听起来貌似很很方便。你也许
// 会和我一样想这个function每次会在onPageStarted之前都会调用它,那么在我们开发
// 中,若发现有些URL自己可以来处理,而不是用webview像平常的url那样解释出来,
// 就可以在这个function中处理,可当你在开发的时候你就发现事实并不是你想象
// 的那样,shouldOverrideUrlLoading并不是每次都在onPageStarted之前开始调
// 用的,就是说一个新的URL不是每次都经过shouldOverrideUrlLoading的(当加载URL时,
// 第一次加载时,此方法并不会被调用,加载完成之后,在页面上点击链接时,才会
//先调用shouldOverrideUrlLoading(),再调用onPageStarted(),
// onPageStarted()方法每次显示页面的时候都会被调用), 只有在调
// 用webview.loadURL的时候才会调用,那你怎么办呢?若你真的想自己处理一些特殊的URL,
// 你可以在onPageStarted中处理,因为onPageStarted每次都会调用,但是你怎样让viewView
//停止解释你自己已经处理的URL呢,方法就是在onPageStarted中检测到url为你想要处理的之
// 后就调用webview.stoploading的funciton来停止webview的加载。
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webView.loadUrl(url);
System.out.println("shouldOverrideUrlLoading");
return true;
}
// 因为shouldOverrideUrlLoading()第一次并不会被调用,而onPageStarted()每次都
// 会被调用, 因此我们要处理一些URL(不想让WebView加载)时,只需在onPageStarted()方
// 法中完成即可
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
System.out.println("onPageStarted");
if (url.equals("http://www.baidu.com/")) {
webView.stopLoading();
}
}
WevView的WebViewClient的加载控制
最新推荐文章于 2023-04-25 22:56:24 发布