Android 解决WebView重定向
来源:互联网 发布:js获取选择文件的路径 编辑:程序博客网 时间:2024/05/27 06:13
调用webviewd的goBack(),goForward()有时候出现的并不是我们想象中的页面,可能连续调了两次goBack才能回到原来的页面。有时候url没错,页面莫名其妙的error。这些往往都是由于网页自身重定向引发的。
拿携程的网址举例子http://m.ctrip.com/
通过对webView开启过的页面进行打印
webView.setWebViewClient(new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { Log.e("kid","onPageStarted="+url); } });
可以看到,onPageStarted不止调用了一次。这也就是我们goBack的时候,要调用几次才能退回的原因了。
我们还看到url出现ctrip://开头的,不知道什么鬼的东东,这个是携程自己的协议,这跟我们自己公司做H5页面,自己定义业务逻辑是一样的(对于android)。同样一段,复制黏贴到ios的浏览器上,发现这一段协议可以弹出一个系统弹框,询问是否要跳转到携程App。所以也有可能是专门给ios做的重定向。这里我们就忽略过了。我们只是不希望这个网站的重定向,影响到我们的正常浏览,比如时不时来个error页面。
解决方法:
webView有一个拦截网络请求的方法,调用在onPageStart之前——shouldOverrideUrlLoading,返回true,则拦截,false则不拦截。我们要做的是,在前进,返回逻辑的时候,讲业务逻辑交给网页本身处理,不拦截它的操作,网页自身会判断你goBack要回到哪里。但要拦截网页自定义的协议,不然进入start Load 这个url之后,比如进入error页面。
webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(!(url.startsWith("http")||url.startsWith("https"))){ return true; } return false; } });
阅读全文
0 0
- android webView 解决重定向
- Android 解决WebView重定向
- 解决Android Webview 重定向无法 goback 的方法
- 安卓webview重定向的解决
- Android进阶---Android Webview重定向问题解决
- Android WebView 内处理302重定向
- Android WebView页面重定向问题
- Android WebView 内处理302重定向
- Android中webview加载重定向地址
- Android WebView重定向GOBACK问题
- Android WebView 内处理302重定向
- 彻底解决 Android webview 防止重定向
- Android WebView重定向问题的解决方案
- android webview 如何去广告和如何解决重定向返回的问题。
- android webview 如何去广告和如何解决重定向返回的问题。
- Android WebView 因重定向无法正常goBack()的一种解决小方案
- android webview 解决回退重定向的问题
- Android WebView 因重定向无法正常goBack()解决方案
- Scala--占位符
- Teamviewer提示我,试用期到期,但是卸载、appdata文件夹删除、注册表删掉之后,再重新打开解压版的Teamviewer,还是提示试用期到期,怎么破?
- python3抓取aqi
- Android事件分发机制
- java给文件内容添加头
- Android 解决WebView重定向
- java中&与&&的区别
- docker之仓库管理
- DEX加密效果分析
- Visual Studio 2012更换皮肤和背景图的方法
- gprof2dot分析代码
- 自定义控件三部曲之动画篇(一)——alpha、scale、translate、rotate、set的xml属性及用法
- 五、Matlab 之 绘图操作(上)
- bzoj 1030 [JSOI2007]文本生成器