检测Web应用程序中的设备类型

Ris*_*hri 25 javascript java websphere-portal

我们有一个基于Java的应用程序,我们希望在其中检测发送请求的设备的设备类型(移动或桌面).

这怎么可能?

leo*_*ges 41

您必须User-Agent从请求中读取标头并确定该标头.

在vanilla 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
  }
}
Run Code Online (Sandbox Code Playgroud)

  • Mozilla网站上最新,更好的方式 - https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent (3认同)

nid*_*hin 13

您可以通过解析http标头来获取设备信息

String browserType = request.getHeader("User-Agent");
Run Code Online (Sandbox Code Playgroud)

您应该解析browserType以获取设备类型

这可能有所帮助

  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;
  }
Run Code Online (Sandbox Code Playgroud)


Jac*_*ack 5

您可以获得第三方软件解决方案.那里有很多开源的.我之前使用过51Degrees.mobi的Java解决方案(并且还开发过他们的开源C解决方案).按照该链接点击下载按钮.起床和跑步相对容易.


小智 5

您可以尝试使用Spring Mobile。有方便的类来解决这个问题。

Device currentDevice = DeviceUtils.getCurrentDevice(servletRequest);
if(currentDevice.isMobile()) { /* Mobile */ }
if(currentDevice.isTablet()) { /* Tablet */ }
if(currentDevice.isNormal()) { /* Desktop */ }
Run Code Online (Sandbox Code Playgroud)

  • “Spring-Mobile”“不再受支持”并且已达到“截止日期” (2认同)