private static MobileVersion verifyMobileBrowser(String browser) { if (browser == null) return null; browser = browser.trim(); String[] strs = new String[2]; strs[1] = browser; for (int i = 0; i < browser.length(); i++) { char c = browser.charAt(i); if (Character.isDigit(c) || c == ' ') { strs[0] = browser.substring(0, i); break; } } MobileVersion version = new MobileVersion(); version.setType(strs[0]); version.setVersion(browser); return version; }
private static MobileVersion verifyMobileOs(String mobileOs) { if (mobileOs == null) return null; mobileOs = mobileOs.replace("_", "."); mobileOs = mobileOs.replace("/", " "); // for nokia if (mobileOs.indexOf("iphone") != -1) mobileOs = mobileOs.replace("iphone os", "ios"); if (mobileOs.equals("ios")) mobileOs = "ios"; if (mobileOs.indexOf("cpu os") != -1) mobileOs = mobileOs.replace("cpu os", "ios"); if (mobileOs.indexOf("symbianos") != -1) mobileOs = mobileOs.replace("symbianos", "symbian"); if (mobileOs.equals("series60") || mobileOs.equals("series40")) mobileOs = "symbian"; String[] strs = mobileOs.split(" "); MobileVersion version = new MobileVersion(); version.setType(strs[0]); version.setVersion(mobileOs); return version; }
public static MobileVersion getMobileBrowser(String userAgent) { userAgent = userAgent.toLowerCase(); Matcher matcher = mobileBrowserUcsPattern.matcher(userAgent); while (matcher.find()) { for (int i = 1; i <= matcher.groupCount(); i++) { String mobile = matcher.group(i); if (mobile != null && mobile.length() > 0) { MobileVersion version = verifyMobileBrowser(mobile); return version; } } } matcher = mobileBrowserQQPattern.matcher(userAgent); while (matcher.find()) { String safariVersion = matcher.group(1); MobileVersion version = new MobileVersion(); version.setType("qq"); version.setVersion("qq " + safariVersion); return version; } matcher = mobileBrowserChromePattern.matcher(userAgent); while (matcher.find()) { String safariVersion = matcher.group(1); MobileVersion version = new MobileVersion(); version.setType("chrome"); version.setVersion("chrome " + safariVersion); return version; } matcher = mobileBrowserOperaPattern.matcher(userAgent); while (matcher.find()) { String safariVersion = matcher.group(1); MobileVersion version = new MobileVersion(); version.setType("opera"); version.setVersion("opera " + safariVersion); return version; } matcher = mobileBrowserSafariPattern.matcher(userAgent); while (matcher.find()) { String safariVersion = matcher.group(1); MobileVersion version = new MobileVersion(); version.setType("safari"); version.setVersion("safari " + safariVersion); return version; } matcher = mobileBrowserIePattern.matcher(userAgent); while (matcher.find()) { String ieVersion = matcher.group(1); MobileVersion version = new MobileVersion(); version.setType("ie"); version.setVersion("ie " + ieVersion); return version; } matcher = mobileBrowserNokiaPattern.matcher(userAgent); while (matcher.find()) { for (int i = 1; i <= matcher.groupCount(); i++) { String nokiaVersion = matcher.group(i); if (nokiaVersion == null || nokiaVersion.length() == 0) continue; MobileVersion version = new MobileVersion(); version.setType(nokiaVersion); if (matcher.groupCount() > i) version.setVersion(nokiaVersion + " " + matcher.group(i + 1)); else version.setVersion(nokiaVersion); return version; } } return null; }