android中webview的返回方法webview.goback失效

前两天遇到这个问题,却一直没时间写博客,为了防止别人再入坑,还是写下来供大家参考

当前界面呢是安卓原生加载的webview界面,点击某项之后仍然在当前界面对url进行替换,

红框里面的银行都可以点击跳转,并且都可以走正常的webview.goback回到此点击页面,唯独民生银行这个界面点击后跳转后,点返回键是走的goback,却在不停的刷新民生银行的界面怎么都返不回,一直点击了三十多次还在刷新民生银行界面,百度了很多都是说是因为某个界面有重定向的话就会出现这种问题,那么首先我们该如何判断他是重定向界面呢

android中webview的返回方法webview.goback失效

WebView有一个getHitTestResult():返回的是一个HitTestResult,一般会根据打开的链接的类型,返回一个extra的信息,如果打开链接不是一个url,或者打开的链接是JavaScript的url,他的类型是UNKNOWN_TYPE,这个url就会通过requestFocusNodeHref(Message)异步重定向。返回的extra为null,或者没有返回extra。根据此方法的返回值,判断是否为null,可以用于解决网页重定向问题。


android中webview的返回方法webview.goback失效

返回: return true;  webview处理url是根据程序来执行的。 

返回: return false; webview处理url是在webview内部执行。

那么如果是重定向的呢,我们就return false,不是重定向就return true

注意:这个shouldOverrideUrlLoading方法里面就不要再写view.loadUrl(url)了

因为你初始化的时候肯定已经load过了,然而这个会默认引用你传的那个url,

返回时判断是否能返回上个url,不能就直接finish掉这个界面,希望能帮助到大家

android中webview的返回方法webview.goback失效