当webview遇到360wifi

简介:

开篇先来说两点事实:

1、现在的很多客户端项目中都会用到webview。

2、现在用360wifi的用户也几乎是办公室中随处可见的事。


大家都知道,我们的手机在第一次连接360wifi的时候,打开浏览器都会弹出360wifi广告页面。如下图所示:


我debug得到的360wifi地址为:http://freewifi.360.cn/portal.php?wifiname=shanhy&url=http%3A%2F%2F172.27.35.1%3A8087%2Fgoto%3F88BC53535A3C623D16277032BE6CC4EF&mid=5e83048d8d072ab2ca70dedc3d563815&checkurl=http%3A%2F%2F172.27.35.1%3A8087%2Fcheck&random=100585513&m=325D6A3D41D7829435E620FC6A1A2552


这种情况在我们平时上网的时候可能不会觉得有什么问题,但是如果我们开发的应用中使用到webview,那么在我们第一次连接360wifi的后,进入到应用中打开第一个webview页面的时候,就会出现这样的一个页面,对应用来说是一个十分不好的体验。下面就是我解决这样问题的方法,分享出来,希望大家有更好的方法的朋友可以留言共同讨论,代码如下:

	/**
	 * 处理URL
	 * 从第三方WIFI的URL中提取实际的URL
	 * 处理360wifi这样自动显示广告页面的情况(本应用的的URL中不会存在WIFI字样,而第三方WIFI广告一般都会包含WIFI关键字,拦截URL后,截取其中的URL参数就是我们真正要访问的地址)
	 * 
	 * @return
	 * @author SHANHY
	 * @date   2015-8-8
	 */
	private String processUrl(String url){
		if(url.contains("wifi") && url.contains("url=")){
			int urlstartIndex = url.indexOf("url=") + 4;
			url = url.substring(urlstartIndex);
			int urlendIndex = url.length();
			if(url.contains("&")){
				urlendIndex = url.indexOf("&");
			}
			url = url.substring(0, urlendIndex);
			try {
				url = URLDecoder.decode(url, "UTF-8");
			} catch (UnsupportedEncodingException e) {
			}
		}
		return url;
	}
	
	/**
	 * URL被重写时会被调用
	 * 
	 * @return 返回true表明点击网页里面的链接还是在当前的WEBVIEW里跳转; false表示WEBVIEW内部处理。
	 */
	public boolean shouldOverrideUrlLoading(final WebView view, String url) {
		if (url == null || url.length() == 0) {
			return false;
		}
		
		url = processUrl(url);
		
		view.loadUrl(url);
		return true;
	}



----------------------------

(完)







目录
相关文章
|
Android开发 数据格式 XML
BluetoothAdapter在Android6.0/7.0+以上startDiscovery不能发现蓝牙设备问题
BluetoothAdapter在Android6.0+以上startDiscovery不能发现蓝牙设备问题 问题的重要原因之一是Android 6.0+,Android 7.0+的权限问题引起的。
1661 0
|
6月前
|
Android开发
android连接指定wifi
android连接指定wifi
99 0
|
Android开发
Android Wifi和蓝牙操作(二)
Android Wifi和蓝牙操作(二)
272 0
|
Android开发
Android Wifi和蓝牙操作(一)
Android Wifi和蓝牙操作(一)
231 0
|
定位技术 Android开发
Android 得到当前已连接的wifi的信号强度
Android 得到当前已连接的wifi的信号强度
260 0
|
网络协议 API Android开发
Android Webview场景下防止dns劫持的探索
阿里云HTTPDNS是避免dns劫持的一种有效手段,在许多特殊场景都有最佳实践,拦截方案是目前已知的一种在webview上应用httpdns的可行方案,本文从拦截方案的基本原理出发,尝试分析该方案背后存在的局限,并给出一些可行性上的建议。
8128 0
|
安全 物联网 Android开发
|
Android开发
Android连接WIFI(续)
历史遗留问题终该解决,之前有文章Android连接WIFI,今天再次整理一下,梳理一下遗留的问题 修改或者删除配置失败,返回-1 Android 6.0以后的限制,程序本身只能修改和删除自己创建的配置,如果是在手机WIFI管理器或者其他应用程序连接的WIFI,那么只能连接,不能修改(有ROOT权限除外)。
1154 0
|
Android开发 API iOS开发
Android——蓝牙连接
    今天要做一个蓝牙4.0的通信,先做个小test,之后再看看具体的api: @Override public void onClick(View v) { switch (v.
978 0
|
Android开发 数据安全/隐私保护
Android连接WIFI
效果图 打开WIFI并获取WIFI列表 连接到指定WIFI 直接连接配置过的WIFI 密码错误 源码 KqwWifiManagerDemo WIFI的获取、连接状态等等的信息,都是通过广播回调的.
1045 0