shouldOverrideUrlLoading()重定向,无法返回跳出WebView的问题

来源:互联网 发布:在线报名系统 php 编辑:程序博客网 时间:2024/06/09 23:06

先说下网上的一个误区:网上很多帖子说

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url);
       return true;
  }

 在点击请求的是链接时才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。

其实返回false也是在当前WebView下跳转,只要这样设置:myWebView.setWebViewClient(new WebViewClient());就可以了,当然WebViewClient类一般会继承重写以便截获操作实现其他动作执行。并且有的url链接会一直在当前WebView下重复加载。

1、 默认返回:return super.shouldOverrideUrlLoading(view, url); 这个返回的方法会调用父类方法,也就是跳转至手机浏览器,平时写webview一般都在方法里面写 webView.loadUrl(url);  然后把这个返回值改成下面的false。
2、返回: return true;  webview处理url是根据程序来执行的。
3、返回: return falsewebview处理url是在webview内部执行


至于WebView下重复加载的问题可能的原因有如下:

 

以下这个url打开的动作,自定义的webview截获不了:
    a. js中setTime之后,自定义的webview截获不了
    b. Ajax中,作为callback处理,给location.href赋值
    c. form提交中的url迁移

 

注意:
如果在onPageStarted里写的话,最好不要出现view.loadUrl(url);因为如果有这个,页面会一直在这里跳动,至少我都注释掉也没发现报错。。。

下面的一个链接讲的很详细:

Android WebView 因重定向无法正常goBack()解决方案


目前的解决方案是:

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       return false;
  }

0 0
原创粉丝点击