做移动开发时,时常要判断移动终端是IOS还是android,以及浏览器,或者手机型号等等操作
其实在用户发起请求时,可以通过header来获取到你想要的东西;我们来看看:
public Object dowlaodapplawyer(HttpServletRequest request, HttpServletResponse response){ String agent= request.getHeader("user-agent"); System.out.println(agent); }
我们可以看到打印的内容如下:
android(小米,内网)访问:
Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; MI 3W Build/KTU84P) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025483 Mobile Safari/533.1 MicroMessenger/6.3.9.48_refecd3e.700 NetType/WIFI Language/zh_CN
android(小米,外网网)访问:
Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/
537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 QQ-URL-Manager Mobile Safar
i/537.36
我们很容易的就可以判断出 android手机 是否是 WIFI 型号
,浏览器等等;
判断方法如下:
if(agent.contains("Android")){ //是否是安卓系统 } if(agent.contains("iPhone")||agent.contains("iPod")||agent.contains("iPad")){ } if(agent.contains("MI")){ //小米 } if(agent.contains("lenovo")){ //联想 } if(agent.contains("WIFI")){ //是否wifi }
有了上面这些判定条件,那么现在有一个需求,一个二维码,通过扫码方式下载一个APP,android将根据手机跳转到不同的应用市场,iphone,ipad等跳转到苹果应用市场的下载链接代码如下:
public Object dowlaodapplawyer(HttpServletRequest request, HttpServletResponse response){ String agent= request.getHeader("user-agent"); if(agent.contains("Android")){ try { if(agent.contains("MI")){
//小米手机跳转到小米应用市场 response.sendRedirect("http://app.mi.com/detail/119750?ref=search"); }else{ response.sendRedirect("http://www.wandoujia.com/apps/com.rogerlauren.lawyer"); } } catch (IOException e) { } }else if(agent.contains("iPhone")||agent.contains("iPod")||agent.contains("iPad")){
//通过微信进入此界面时,由于苹果市场并没有提供在浏览器中打开的提示 if(agent.contains("Safari")){ try {
//听过手机跳转到苹果应用市场(重定向) response.sendRedirect("https://itunes.apple.com/cn/app/you-lu-lu-shi-duan/id1057109909?mt=8"); } catch (IOException e) { e.printStackTrace(); } }else{
//跳转到自定义页面,添加提示在浏览器中打开的提示(转发,在浏览器中打开时,地址不变) return "dowloadhelp"; } } return null; }