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; }
public static void main(String[] args) { String nokia = "Nokia7610/2.0 (5.0509.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0"; String nokia2 = "Nokia8310/1.0 (05.11) UP.Link/6.5.0.0.06.5.0.0.06.5.0.0.06.5.0.0.0"; String nokiaN8 = "Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/012.002; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.0 Mobile Safari/533.4 3gpp-gba"; String nokiax3 = "Mozilla/5.0 (Series40; NokiaX3-02/le6.32; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/1.0.0.11.8"; String nikiaN97 = "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/12.0.024; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.12344"; String nokiaN5700 = "NOKIA5700/UCWEB7.0.2.37/28/999"; String HTCMiui = "HTC miui默认浏览器 :Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; HTC HD2 Build/MIUI) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; String otherAndroid = "Mozilla/5.0 (Linux; U; Android 2.2; nl-nl; Desire_A8181 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; String otherAndroid2 = "Mozilla/5.0 (Linux; U; Android 1.6; en-us; WOWMobile myTouch 3G Build/unknown) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1"; String m9 = " Mozilla/5.0 (Linux; U; Android 2.2; zh-cn; meizu_m9 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; String m92 = "JUC (Linux; U; 2.2; zh-cn; meizu_m9; 640*960) UCWEB7.9.0.94/139/800"; String sonyEricsson = "Mozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; SonyEricssonE15i Build/2.0.1.A.0.47) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"; String sonyEricsson2 = "Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; E10i Build/2.0.2.A.0.24) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"; String motorola = "Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; Droid Build/ESE81) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"; String googleNexus = "Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; String samsung = "Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; String iphone = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; zh-cn) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7"; String iphoneUc = "IUC(U;iOS 4.1;Zh-cn;320*480;)/UCWEB8.0.3.99/41/997"; String ipad = "mozilla/5.0 (ipad;U;Cpu os 3_2 like mac os X;zh-ch) applewebkit/ 531.21.10(khtml,like gecko) version/4.0.4 mobile/7B367 safari/531.21.10"; String winphone = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Windows Phone 6.5)"; String qqbrowser = "symbianos/8.0 series60/2.6"; String userAgent = ipad; boolean isMobile = isMobile(userAgent); System.out.println("是不是手机设备:" + isMobile); String mobile = getMobileModel(userAgent); System.out.println("手机品牌是: " + mobile); MobileVersion mobileOs = getMobileOs(userAgent); if (mobileOs != null) { System.out.println("手机系统类型是: " + mobileOs.getType()); System.out.println("手机系统版本号是: " + mobileOs.getVersion()); } else { System.out.println("手机系统获取错误"); } MobileVersion mobileBrowser = getMobileBrowser(userAgent); if (mobileBrowser != null) { System.out.println("手机浏览器类型是: " + mobileBrowser.getType()); System.out.println("手机浏览器版本号是: " + mobileBrowser.getVersion()); } else { System.out.println("手机浏览器获取出错"); } }