检测Web应用程序中的设备types

我们有一个基于Java的应用程序,我们希望检测发送请求的设备的设备types(移动设备或桌面设备)。

这怎么可能?

你必须从请求中读取User-Agent标题并决定。

在香草servlet应用程序中,一个简单的方法是:

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(request.getHeader("User-Agent").indexOf("Mobile") != -1) { //you're in mobile land } else { //nope, this is probably a desktop } } 

您可以通过parsinghttp头来获取设备信息

 String browserType = request.getHeader("User-Agent"); 

你应该parsingbrowserType来获取设备types

这可能有帮助

  public String getBrowserInfo( String Information ) { String browsername = ""; String browserversion = ""; String browser = Information; if (browser.contains("MSIE")) { String subsString = browser.substring(browser.indexOf("MSIE")); String info[] = (subsString.split(";")[0]).split(" "); browsername = info[0]; browserversion = info[1]; } else if (browser.contains("Firefox")) { String subsString = browser.substring(browser.indexOf("Firefox")); String info[] = (subsString.split(" ")[0]).split("/"); browsername = info[0]; browserversion = info[1]; } else if (browser.contains("Chrome")) { String subsString = browser.substring(browser.indexOf("Chrome")); String info[] = (subsString.split(" ")[0]).split("/"); browsername = info[0]; browserversion = info[1]; } else if (browser.contains("Opera")) { String subsString = browser.substring(browser.indexOf("Opera")); String info[] = (subsString.split(" ")[0]).split("/"); browsername = info[0]; browserversion = info[1]; } else if (browser.contains("Safari")) { String subsString = browser.substring(browser.indexOf("Safari")); String info[] = (subsString.split(" ")[0]).split("/"); browsername = info[0]; browserversion = info[1]; } return browsername + "-" + browserversion; } 

您可以获得第三方软件解决scheme。 有很多开源的。 在此之前,我已经使用了51Degrees.mobi的Java解决scheme (并且也开发了他们的开源C解决scheme)。 按照该链接并点击下载button。 起床和跑步相对容易。

您可以检查HttpServletRequest对象上的User-Agent HTTP标头 。

参考: http : //www.w3.org/Protocols/HTTP/HTRQ_Headers.html#user-agent

你可以试试这个lib我想,yauaa可以检测到用户代理string是哪个设备/软件

https://github.com/nielsbasjes/yauaa

对于Java 51Degrees在GitHub上有一个免费的API https://github.com/51Degrees/Java-Device-Detection ,它是定期的不定期的,应该能够涵盖所有你需要的基本的拘留。

有一个教程如何使用API​​的设备types检测在这里https://51degrees.com/Developers/Documentation/APIs/Java-V32/Tutorials/Web-App

还有一个提供DeviceType属性的免费云版本(如果您不仅仅需要IsMobile),您可以在51Degrees网站上find关于此的详细信息。 你需要通过网站“购买”免费的云,但它不要求银行的细节,是完全免费的。 您还可以根据您的要求使用JavaScript和其他集成。

披露:我在51Degrees工作。