以下为常用判断,可直接创建使用

/**
* Created by kangao on 2018/3/23.
*/
public class UAgentInfoHelper {
// User-Agent and Accept HTTP request headers private String userAgent = "";
private String httpAccept = ""; // Let's store values for quickly accessing the same info multiple times.
public boolean initCompleted = false;
public boolean isWebkit = false; //Stores the result of DetectWebkit()
public boolean isMobilePhone = false; //Stores the result of DetectMobileQuick()
public boolean isIphone = false; //Stores the result of DetectIphone()
public boolean isAndroid = false; //Stores the result of DetectAndroid()
public boolean isAndroidPhone = false; //Stores the result of DetectAndroidPhone()
public boolean isTierTablet = false; //Stores the result of DetectTierTablet()
public boolean isTierIphone = false; //Stores the result of DetectTierIphone()
public boolean isTierRichCss = false; //Stores the result of DetectTierRichCss()
public boolean isTierGenericMobile = false; //Stores the result of DetectTierOtherPhones() // Initialize some initial smartphone string variables.
public static final String engineWebKit = "webkit"; public static final String deviceIphone = "iphone";
public static final String deviceIpod = "ipod";
public static final String deviceIpad = "ipad";
public static final String deviceMacPpc = "macintosh"; //Used for disambiguation public static final String deviceAndroid = "android";
public static final String deviceGoogleTV = "googletv";
public static final String deviceHtcFlyer = "htc_flyer"; //HTC Flyer public static final String deviceWinPhone7 = "windows phone os 7";
public static final String deviceWinPhone8 = "windows phone 8";
public static final String deviceWinMob = "windows ce";
public static final String deviceWindows = "windows";
public static final String deviceIeMob = "iemobile";
public static final String devicePpc = "ppc"; //Stands for PocketPC
public static final String enginePie = "wm5 pie"; //An old Windows Mobile public static final String deviceBB = "blackberry";
public static final String deviceBB10 = "bb10"; //For the new BB 10 OS
public static final String vndRIM = "vnd.rim"; //Detectable when BB devices emulate IE or Firefox
public static final String deviceBBStorm = "blackberry95"; //Storm 1 and 2
public static final String deviceBBBold = "blackberry97"; //Bold 97x0 (non-touch)
public static final String deviceBBBoldTouch = "blackberry 99"; //Bold 99x0 (touchscreen)
public static final String deviceBBTour = "blackberry96"; //Tour
public static final String deviceBBCurve = "blackberry89"; //Curve 2
public static final String deviceBBCurveTouch = "blackberry 938"; //Curve Touch 9380
public static final String deviceBBTorch = "blackberry 98"; //Torch
public static final String deviceBBPlaybook = "playbook"; //PlayBook tablet public static final String deviceSymbian = "symbian";
public static final String deviceS60 = "series60";
public static final String deviceS70 = "series70";
public static final String deviceS80 = "series80";
public static final String deviceS90 = "series90"; public static final String devicePalm = "palm";
public static final String deviceWebOS = "webos"; //For Palm's line of WebOS devices
public static final String deviceWebOShp = "hpwos"; //For HP's line of WebOS devices
public static final String engineBlazer = "blazer"; //Old Palm
public static final String engineXiino = "xiino"; //Another old Palm public static final String deviceNuvifone = "nuvifone"; //Garmin Nuvifone
public static final String deviceBada = "bada"; //Samsung's Bada OS
public static final String deviceTizen = "tizen"; //Tizen OS
public static final String deviceMeego = "meego"; //Meego OS public static final String deviceKindle = "kindle"; //Amazon Kindle, eInk one
public static final String engineSilk = "silk-accelerated"; //Amazon's accelerated Silk browser for Kindle Fire //Initialize variables for mobile-specific content.
public static final String vndwap = "vnd.wap";
public static final String wml = "wml"; //Initialize variables for other random devices and mobile browsers.
public static final String deviceTablet = "tablet"; //Generic term for slate and tablet devices
public static final String deviceBrew = "brew";
public static final String deviceDanger = "danger";
public static final String deviceHiptop = "hiptop";
public static final String devicePlaystation = "playstation";
public static final String devicePlaystationVita = "vita";
public static final String deviceNintendoDs = "nitro";
public static final String deviceNintendo = "nintendo";
public static final String deviceWii = "wii";
public static final String deviceXbox = "xbox";
public static final String deviceArchos = "archos"; public static final String engineOpera = "opera"; //Popular browser
public static final String engineNetfront = "netfront"; //Common embedded OS browser
public static final String engineUpBrowser = "up.browser"; //common on some phones
public static final String engineOpenWeb = "openweb"; //Transcoding by OpenWave server
public static final String deviceMidp = "midp"; //a mobile Java technology
public static final String uplink = "up.link";
public static final String engineTelecaQ = "teleca q"; //a modern feature phone browser
public static final String engineObigo = "obigo"; //W 10 is a modern feature phone browser public static final String devicePda = "pda"; //some devices report themselves as PDAs
public static final String mini = "mini"; //Some mobile browsers put "mini" in their names.
public static final String mobile = "mobile"; //Some mobile browsers put "mobile" in their user agent strings.
public static final String mobi = "mobi"; //Some mobile browsers put "mobi" in their user agent strings. //Use Maemo, Tablet, and Linux to test for Nokia"s Internet Tablets.
public static final String maemo = "maemo";
public static final String linux = "linux";
public static final String qtembedded = "qt embedded"; //for Sony Mylo
public static final String mylocom2 = "com2"; //for Sony Mylo also //In some UserAgents, the only clue is the manufacturer.
public static final String manuSonyEricsson = "sonyericsson";
public static final String manuericsson = "ericsson";
public static final String manuSamsung1 = "sec-sgh";
public static final String manuSony = "sony";
public static final String manuHtc = "htc"; //In some UserAgents, the only clue is the operator.
public static final String svcDocomo = "docomo";
public static final String svcKddi = "kddi";
public static final String svcVodafone = "vodafone"; //Disambiguation strings.
public static final String disUpdate = "update"; //pda vs. update /**
* Initialize the userAgent and httpAccept variables
*
* @param userAgent the User-Agent header
* @param httpAccept the Accept header
*/
public UAgentInfoHelper(String userAgent, String httpAccept) {
if (userAgent != null) {
this.userAgent = userAgent.toLowerCase();
}
if (httpAccept != null) {
this.httpAccept = httpAccept.toLowerCase();
} //Intialize key stored values.
initDeviceScan();
} /**
* Return the lower case HTTP_USER_AGENT
* @return userAgent
*/
public String getUserAgent() {
return userAgent;
} /**
* Return the lower case HTTP_ACCEPT
* @return httpAccept
*/
public String getHttpAccept() {
return httpAccept;
} /**
* Return whether the device is an Iphone or iPod Touch
* @return isIphone
*/
public boolean getIsIphone() {
return isIphone;
} /**
* Return whether the device is in the Tablet Tier.
* @return isTierTablet
*/
public boolean getIsTierTablet() {
return isTierTablet;
} /**
* Return whether the device is in the Iphone Tier.
* @return isTierIphone
*/
public boolean getIsTierIphone() {
return isTierIphone;
} /**
* Return whether the device is in the 'Rich CSS' tier of mobile devices.
* @return isTierRichCss
*/
public boolean getIsTierRichCss() {
return isTierRichCss;
} /**
* Return whether the device is a generic, less-capable mobile device.
* @return isTierGenericMobile
*/
public boolean getIsTierGenericMobile() {
return isTierGenericMobile;
} /**
* Initialize Key Stored Values.
*/
public void initDeviceScan() {
//Save these properties to speed processing
this.isWebkit = detectWebkit();
this.isIphone = detectIphone();
this.isAndroid = detectAndroid();
this.isAndroidPhone = detectAndroidPhone(); //Generally, these tiers are the most useful for web development
this.isMobilePhone = detectMobileQuick();
this.isTierTablet = detectTierTablet();
this.isTierIphone = detectTierIphone(); //Optional: Comment these out if you NEVER use them
this.isTierRichCss = detectTierRichCss();
this.isTierGenericMobile = detectTierOtherPhones(); this.initCompleted = true;
} /**
* Detects if the current device is an iPhone.
* @return detection of an iPhone
*/
public boolean detectIphone() {
if ((this.initCompleted == true) ||
(this.isIphone == true))
return this.isIphone; // The iPad and iPod touch say they're an iPhone! So let's disambiguate.
if (userAgent.indexOf(deviceIphone) != -1 &&
!detectIpad() &&
!detectIpod()) {
return true;
}
return false;
} /**
* Detects if the current device is an iPod Touch.
* @return detection of an iPod Touch
*/
public boolean detectIpod() {
if (userAgent.indexOf(deviceIpod) != -1) {
return true;
}
return false;
} /**
* Detects if the current device is an iPad tablet.
* @return detection of an iPad
*/
public boolean detectIpad() {
if (userAgent.indexOf(deviceIpad) != -1
&& detectWebkit()) {
return true;
}
return false;
} /**
* Detects if the current device is an iPhone or iPod Touch.
* @return detection of an iPhone or iPod Touch
*/
public boolean detectIphoneOrIpod() {
//We repeat the searches here because some iPods may report themselves as an iPhone, which would be okay.
if (userAgent.indexOf(deviceIphone) != -1
|| userAgent.indexOf(deviceIpod) != -1) {
return true;
}
return false;
} /**
* Detects *any* iOS device: iPhone, iPod Touch, iPad.
* @return detection of an Apple iOS device
*/
public boolean detectIos() {
if (detectIphoneOrIpod() || detectIpad()) {
return true;
}
return false;
} /**
* Detects *any* Android OS-based device: phone, tablet, and multi-media player.
* Also detects Google TV.
* @return detection of an Android device
*/
public boolean detectAndroid() {
if ((this.initCompleted == true) ||
(this.isAndroid == true))
return this.isAndroid; if ((userAgent.indexOf(deviceAndroid) != -1) ||
detectGoogleTV())
return true;
//Special check for the HTC Flyer 7" tablet. It should report here.
if (userAgent.indexOf(deviceHtcFlyer) != -1)
return true;
return false;
} /**
* Detects if the current device is a (small-ish) Android OS-based device
* used for calling and/or multi-media (like a Samsung Galaxy Player).
* Google says these devices will have 'Android' AND 'mobile' in user agent.
* Ignores tablets (Honeycomb and later).
* @return detection of an Android phone
*/
public boolean detectAndroidPhone() {
if ((this.initCompleted == true) ||
(this.isAndroidPhone == true))
return this.isAndroidPhone; if (detectAndroid() && (userAgent.indexOf(mobile) != -1))
return true;
//Special check for Android phones with Opera Mobile. They should report here.
if (detectOperaAndroidPhone())
return true;
//Special check for the HTC Flyer 7" tablet. It should report here.
if (userAgent.indexOf(deviceHtcFlyer) != -1)
return true;
return false;
} /**
* Detects if the current device is a (self-reported) Android tablet.
* Google says these devices will have 'Android' and NOT 'mobile' in their user agent.
* @return detection of an Android tablet
*/
public boolean detectAndroidTablet() {
//First, let's make sure we're on an Android device.
if (!detectAndroid())
return false; //Special check for Opera Android Phones. They should NOT report here.
if (detectOperaMobile())
return false;
//Special check for the HTC Flyer 7" tablet. It should NOT report here.
if (userAgent.indexOf(deviceHtcFlyer) != -1)
return false; //Otherwise, if it's Android and does NOT have 'mobile' in it, Google says it's a tablet.
if ((userAgent.indexOf(mobile) > -1))
return false;
else
return true;
} /**
* Detects if the current device is an Android OS-based device and
* the browser is based on WebKit.
* @return detection of an Android WebKit browser
*/
public boolean detectAndroidWebKit() {
if (detectAndroid() && detectWebkit()) {
return true;
}
return false;
} /**
* Detects if the current device is a GoogleTV.
* @return detection of GoogleTV
*/
public boolean detectGoogleTV() {
if (userAgent.indexOf(deviceGoogleTV) != -1) {
return true;
}
return false;
} /**
* Detects if the current browser is based on WebKit.
* @return detection of a WebKit browser
*/
public boolean detectWebkit() {
if ((this.initCompleted == true) ||
(this.isWebkit == true))
return this.isWebkit; if (userAgent.indexOf(engineWebKit) != -1) {
return true;
}
return false;
} /**
* Detects if the current browser is EITHER a Windows Phone 7.x OR 8 device
* @return detection of Windows Phone 7.x OR 8
*/
public boolean detectWindowsPhone() {
if (detectWindowsPhone7() || detectWindowsPhone8()) {
return true;
}
return false;
} /**
* Detects a Windows Phone 7.x device (in mobile browsing mode).
* @return detection of Windows Phone 7
*/
public boolean detectWindowsPhone7() {
if (userAgent.indexOf(deviceWinPhone7) != -1) {
return true;
}
return false;
} /**
* Detects a Windows Phone 8 device (in mobile browsing mode).
* @return detection of Windows Phone 8
*/
public boolean detectWindowsPhone8() {
if (userAgent.indexOf(deviceWinPhone8) != -1) {
return true;
}
return false;
} /**
* Detects if the current browser is a Windows Mobile device.
* Excludes Windows Phone 7.x and 8 devices.
* Focuses on Windows Mobile 6.xx and earlier.
* @return detection of Windows Mobile
*/
public boolean detectWindowsMobile() {
if (detectWindowsPhone()) {
return false;
}
//Most devices use 'Windows CE', but some report 'iemobile'
// and some older ones report as 'PIE' for Pocket IE.
// We also look for instances of HTC and Windows for many of their WinMo devices.
if (userAgent.indexOf(deviceWinMob) != -1
|| userAgent.indexOf(deviceWinMob) != -1
|| userAgent.indexOf(deviceIeMob) != -1
|| userAgent.indexOf(enginePie) != -1
|| (userAgent.indexOf(manuHtc) != -1 && userAgent.indexOf(deviceWindows) != -1)
|| (detectWapWml() && userAgent.indexOf(deviceWindows) != -1)) {
return true;
} //Test for Windows Mobile PPC but not old Macintosh PowerPC.
if (userAgent.indexOf(devicePpc) != -1 &&
!(userAgent.indexOf(deviceMacPpc) != -1))
return true; return false;
} /**
* Detects if the current browser is any BlackBerry.
* Includes BB10 OS, but excludes the PlayBook.
* @return detection of Blackberry
*/
public boolean detectBlackBerry() {
if (userAgent.indexOf(deviceBB) != -1 ||
httpAccept.indexOf(vndRIM) != -1)
return true; if (detectBlackBerry10Phone())
return true; return false;
} /**
* Detects if the current browser is a BlackBerry 10 OS phone.
* Excludes tablets.
* @return detection of a Blackberry 10 device
*/
public boolean detectBlackBerry10Phone() {
if (userAgent.indexOf(deviceBB10) != -1 &&
userAgent.indexOf(mobile) != -1) {
return true;
}
return false;
} /**
* Detects if the current browser is on a BlackBerry tablet device.
* Example: PlayBook
* @return detection of a Blackberry Tablet
*/
public boolean detectBlackBerryTablet() {
if (userAgent.indexOf(deviceBBPlaybook) != -1) {
return true;
}
return false;
} /**
* Detects if the current browser is a BlackBerry device AND uses a
* WebKit-based browser. These are signatures for the new BlackBerry OS 6.
* Examples: Torch. Includes the Playbook.
* @return detection of a Blackberry device with WebKit browser
*/
public boolean detectBlackBerryWebKit() {
if (detectBlackBerry() && detectWebkit())
return true;
return false;
} /**
* Detects if the current browser is a BlackBerry Touch
* device, such as the Storm, Torch, and Bold Touch. Excludes the Playbook.
* @return detection of a Blackberry touchscreen device
*/
public boolean detectBlackBerryTouch() {
if (detectBlackBerry() &&
(userAgent.indexOf(deviceBBStorm) != -1 ||
userAgent.indexOf(deviceBBTorch) != -1 ||
userAgent.indexOf(deviceBBBoldTouch) != -1 ||
userAgent.indexOf(deviceBBCurveTouch) != -1 )) {
return true;
}
return false;
} /**
* Detects if the current browser is a BlackBerry device AND
* has a more capable recent browser. Excludes the Playbook.
* Examples, Storm, Bold, Tour, Curve2
* Excludes the new BlackBerry OS 6 and 7 browser!!
* @return detection of a Blackberry device with a better browser
*/
public boolean detectBlackBerryHigh() {
//Disambiguate for BlackBerry OS 6 or 7 (WebKit) browser
if (detectBlackBerryWebKit())
return false;
if (detectBlackBerry()) {
if (detectBlackBerryTouch()
|| userAgent.indexOf(deviceBBBold) != -1
|| userAgent.indexOf(deviceBBTour) != -1
|| userAgent.indexOf(deviceBBCurve) != -1) {
return true;
} else {
return false;
}
} else {
return false;
}
} /**
* Detects if the current browser is a BlackBerry device AND
* has an older, less capable browser.
* Examples: Pearl, 8800, Curve1
* @return detection of a Blackberry device with a poorer browser
*/
public boolean detectBlackBerryLow() {
if (detectBlackBerry()) {
//Assume that if it's not in the High tier, then it's Low
if (detectBlackBerryHigh()
|| detectBlackBerryWebKit()) {
return false;
} else {
return true;
}
} else {
return false;
}
} /**
* Detects if the current browser is the Symbian S60 Open Source Browser.
* @return detection of Symbian S60 Browser
*/
public boolean detectS60OssBrowser() {
//First, test for WebKit, then make sure it's either Symbian or S60.
if (detectWebkit()
&& (userAgent.indexOf(deviceSymbian) != -1
|| userAgent.indexOf(deviceS60) != -1)) {
return true;
}
return false;
} /**
*
* Detects if the current device is any Symbian OS-based device,
* including older S60, Series 70, Series 80, Series 90, and UIQ,
* or other browsers running on these devices.
* @return detection of SymbianOS
*/
public boolean detectSymbianOS() {
if (userAgent.indexOf(deviceSymbian) != -1
|| userAgent.indexOf(deviceS60) != -1
|| userAgent.indexOf(deviceS70) != -1
|| userAgent.indexOf(deviceS80) != -1
|| userAgent.indexOf(deviceS90) != -1) {
return true;
}
return false;
} /**
* Detects if the current browser is on a PalmOS device.
* @return detection of a PalmOS device
*/
public boolean detectPalmOS() {
//Make sure it's not WebOS first
if (detectPalmWebOS())
return false; //Most devices nowadays report as 'Palm', but some older ones reported as Blazer or Xiino.
if (userAgent.indexOf(devicePalm) != -1
|| userAgent.indexOf(engineBlazer) != -1
|| userAgent.indexOf(engineXiino) != -1) {
return true;
}
return false;
} /**
* Detects if the current browser is on a Palm device
* running the new WebOS.
* @return detection of a Palm WebOS device
*/
public boolean detectPalmWebOS() {
if (userAgent.indexOf(deviceWebOS) != -1) {
return true;
}
return false;
} /**
* Detects if the current browser is on an HP tablet running WebOS.
* @return detection of an HP WebOS tablet
*/
public boolean detectWebOSTablet() {
if (userAgent.indexOf(deviceWebOShp) != -1 &&
userAgent.indexOf(deviceTablet) != -1) {
return true;
}
return false;
} /**
* Detects Opera Mobile or Opera Mini.
* @return detection of an Opera browser for a mobile device
*/
public boolean detectOperaMobile() {
if (userAgent.indexOf(engineOpera) != -1
&& (userAgent.indexOf(mini) != -1
|| userAgent.indexOf(mobi) != -1)) {
return true;
}
return false;
} /**
* Detects Opera Mobile on an Android phone.
* @return detection of an Opera browser on an Android phone
*/
public boolean detectOperaAndroidPhone() {
if (userAgent.indexOf(engineOpera) != -1
&& (userAgent.indexOf(deviceAndroid) != -1
&& userAgent.indexOf(mobi) != -1)) {
return true;
}
return false;
} /**
* Detects Opera Mobile on an Android tablet.
* @return detection of an Opera browser on an Android tablet
*/
public boolean detectOperaAndroidTablet() {
if (userAgent.indexOf(engineOpera) != -1
&& (userAgent.indexOf(deviceAndroid) != -1
&& userAgent.indexOf(deviceTablet) != -1)) {
return true;
}
return false;
} /**
* Detects if the current device is an Amazon Kindle (eInk devices only).
* Note: For the Kindle Fire, use the normal Android methods.
* @return detection of a Kindle
*/
public boolean detectKindle() {
if (userAgent.indexOf(deviceKindle)!= -1 &&
!detectAndroid()) {
return true;
}
return false;
} /**
* Detects if the current Amazon device is using the Silk Browser.
* Note: Typically used by the the Kindle Fire.
* @return detection of an Amazon Kindle Fire in Silk mode.
*/
public boolean detectAmazonSilk() {
if (userAgent.indexOf(engineSilk) != -1) {
return true;
}
return false;
} /**
* Detects if the current browser is a
* Garmin Nuvifone.
* @return detection of a Garmin Nuvifone
*/
public boolean detectGarminNuvifone() {
if (userAgent.indexOf(deviceNuvifone) != -1) {
return true;
}
return false;
} /**
* Detects a device running the Bada smartphone OS from Samsung.
* @return detection of a Bada device
*/
public boolean detectBada() {
if (userAgent.indexOf(deviceBada) != -1) {
return true;
}
return false;
} /**
* Detects a device running the Tizen smartphone OS.
* @return detection of a Tizen device
*/
public boolean detectTizen() {
if (userAgent.indexOf(deviceTizen) != -1) {
return true;
}
return false;
} /**
* Detects a device running the Meego OS.
* @return detection of a Meego device
*/
public boolean detectMeego() {
if (userAgent.indexOf(deviceMeego) != -1) {
return true;
}
return false;
} /**
* Detects the Danger Hiptop device.
* @return detection of a Danger Hiptop
*/
public boolean detectDangerHiptop() {
if (userAgent.indexOf(deviceDanger) != -1
|| userAgent.indexOf(deviceHiptop) != -1) {
return true;
}
return false;
} /**
* Detects if the current browser is a Sony Mylo device.
* @return detection of a Sony Mylo device
*/
public boolean detectSonyMylo() {
if (userAgent.indexOf(manuSony) != -1
&& (userAgent.indexOf(qtembedded) != -1
|| userAgent.indexOf(mylocom2) != -1)) {
return true;
}
return false;
} /**
* Detects if the current device is on one of the Maemo-based Nokia Internet Tablets.
* @return detection of a Maemo OS tablet
*/
public boolean detectMaemoTablet() {
if (userAgent.indexOf(maemo) != -1) {
return true;
} else if (userAgent.indexOf(linux) != -1
&& userAgent.indexOf(deviceTablet) != -1
&& !detectWebOSTablet()
&& !detectAndroid()) {
return true;
}
return false;
} /**
* Detects if the current device is an Archos media player/Internet tablet.
* @return detection of an Archos media player
*/
public boolean detectArchos() {
if (userAgent.indexOf(deviceArchos) != -1) {
return true;
}
return false;
} /**
* Detects if the current device is an Internet-capable game console.
* Includes many handheld consoles.
* @return detection of any Game Console
*/
public boolean detectGameConsole() {
if (detectSonyPlaystation()
|| detectNintendo()
|| detectXbox()) {
return true;
}
return false;
} /**
* Detects if the current device is a Sony Playstation.
* @return detection of Sony Playstation
*/
public boolean detectSonyPlaystation() {
if (userAgent.indexOf(devicePlaystation) != -1) {
return true;
}
return false;
} /**
* Detects if the current device is a handheld gaming device with
* a touchscreen and modern iPhone-class browser. Includes the Playstation Vita.
* @return detection of a handheld gaming device
*/
public boolean detectGamingHandheld() {
if ((userAgent.indexOf(devicePlaystation) != -1) &&
(userAgent.indexOf(devicePlaystationVita) != -1)) {
return true;
}
return false;
} /**
* Detects if the current device is a Nintendo game device.
* @return detection of Nintendo
*/
public boolean detectNintendo() {
if (userAgent.indexOf(deviceNintendo) != -1
|| userAgent.indexOf(deviceWii) != -1
|| userAgent.indexOf(deviceNintendoDs) != -1) {
return true;
}
return false;
} /**
* Detects if the current device is a Microsoft Xbox.
* @return detection of Xbox
*/
public boolean detectXbox() {
if (userAgent.indexOf(deviceXbox) != -1) {
return true;
}
return false;
} /**
* Detects whether the device is a Brew-powered device.
* @return detection of a Brew device
*/
public boolean detectBrewDevice() {
if (userAgent.indexOf(deviceBrew) != -1) {
return true;
}
return false;
} /**
* Detects whether the device supports WAP or WML.
* @return detection of a WAP- or WML-capable device
*/
public boolean detectWapWml() {
if (httpAccept.indexOf(vndwap) != -1
|| httpAccept.indexOf(wml) != -1) {
return true;
}
return false;
} /**
* Detects if the current device supports MIDP, a mobile Java technology.
* @return detection of a MIDP mobile Java-capable device
*/
public boolean detectMidpCapable() {
if (userAgent.indexOf(deviceMidp) != -1
|| httpAccept.indexOf(deviceMidp) != -1) {
return true;
}
return false;
} //*****************************
// Device Classes
//***************************** /**
* Check to see whether the device is any device
* in the 'smartphone' category.
* @return detection of a general smartphone device
*/
public boolean detectSmartphone() {
//Exclude duplicates from TierIphone
return (detectTierIphone()
|| detectS60OssBrowser()
|| detectSymbianOS()
|| detectWindowsMobile()
|| detectBlackBerry()
|| detectPalmOS());
} /**
* Detects if the current device is a mobile device.
* This method catches most of the popular modern devices.
* Excludes Apple iPads and other modern tablets.
* @return detection of any mobile device using the quicker method
*/
public boolean detectMobileQuick() {
//Let's exclude tablets
if ((initCompleted == true) ||
(isMobilePhone == true))
return isMobilePhone; //Most mobile browsing is done on smartphones
if (detectSmartphone())
return true; if (detectWapWml()
|| detectBrewDevice()
|| detectOperaMobile()
|| detectTierTablet())
return true; if ((userAgent.indexOf(engineObigo) != -1)
|| (userAgent.indexOf(engineNetfront) != -1)
|| (userAgent.indexOf(engineUpBrowser) != -1)
|| (userAgent.indexOf(engineOpenWeb) != -1))
return true; if (detectDangerHiptop()
|| detectMidpCapable()
|| detectMaemoTablet()
|| detectArchos())
return true; if ((userAgent.indexOf(devicePda) != -1) &&
(userAgent.indexOf(disUpdate) < 0)) //no index found
return true; if (userAgent.indexOf(mobile) != -1)
return true; //We also look for Kindle devices
if (detectKindle()
|| detectAmazonSilk())
return true; return false;
} /**
* The longer and more thorough way to detect for a mobile device.
* Will probably detect most feature phones,
* smartphone-class devices, Internet Tablets,
* Internet-enabled game consoles, etc.
* This ought to catch a lot of the more obscure and older devices, also --
* but no promises on thoroughness!
* @return detection of any mobile device using the more thorough method
*/
public boolean detectMobileLong() {
if (detectMobileQuick()
|| detectGameConsole()
|| detectSonyMylo()) {
return true;
} //detect older phones from certain manufacturers and operators.
if (userAgent.indexOf(uplink) != -1)
return true;
if (userAgent.indexOf(manuSonyEricsson) != -1)
return true;
if (userAgent.indexOf(manuericsson) != -1)
return true;
if (userAgent.indexOf(manuSamsung1) != -1)
return true; if (userAgent.indexOf(svcDocomo) != -1)
return true;
if (userAgent.indexOf(svcKddi) != -1)
return true;
if (userAgent.indexOf(svcVodafone) != -1)
return true; return false;
} //*****************************
// For Mobile Web Site Design
//***************************** /**
* The quick way to detect for a tier of devices.
* This method detects for the new generation of
* HTML 5 capable, larger screen tablets.
* Includes iPad, Android (e.g., Xoom), BB Playbook, WebOS, etc.
* @return detection of any device in the Tablet Tier
*/
public boolean detectTierTablet() {
if ((this.initCompleted == true) ||
(this.isTierTablet == true))
return this.isTierTablet; if (detectIpad()
|| detectAndroidTablet()
|| detectBlackBerryTablet()
|| detectWebOSTablet()) {
return true;
}
return false;
} /**
* The quick way to detect for a tier of devices.
* This method detects for devices which can
* display iPhone-optimized web content.
* Includes iPhone, iPod Touch, Android, Windows Phone 7 and 8, BB10, WebOS, Playstation Vita, etc.
* @return detection of any device in the iPhone/Android/Windows Phone/BlackBerry/WebOS Tier
*/
public boolean detectTierIphone() {
if ((this.initCompleted == true) ||
(this.isTierIphone == true))
return this.isTierIphone; if (detectIphoneOrIpod()
|| detectAndroidPhone()
|| detectWindowsPhone()
|| detectBlackBerry10Phone()
|| (detectBlackBerryWebKit()
&& detectBlackBerryTouch())
|| detectPalmWebOS()
|| detectBada()
|| detectTizen()
|| detectGamingHandheld()) {
return true;
}
return false;
} /**
* The quick way to detect for a tier of devices.
* This method detects for devices which are likely to be capable
* of viewing CSS content optimized for the iPhone,
* but may not necessarily support JavaScript.
* Excludes all iPhone Tier devices.
* @return detection of any device in the 'Rich CSS' Tier
*/
public boolean detectTierRichCss() {
if ((this.initCompleted == true) ||
(this.isTierRichCss == true))
return this.isTierRichCss; boolean result = false; //The following devices are explicitly ok.
//Note: 'High' BlackBerry devices ONLY
if (detectMobileQuick()) { //Exclude iPhone Tier and e-Ink Kindle devices.
if (!detectTierIphone() && !detectKindle()) { //The following devices are explicitly ok.
//Note: 'High' BlackBerry devices ONLY
//Older Windows 'Mobile' isn't good enough for iPhone Tier.
if (detectWebkit()
|| detectS60OssBrowser()
|| detectBlackBerryHigh()
|| detectWindowsMobile()
|| userAgent.indexOf(engineTelecaQ) != -1) {
result= true;
}
}
}
return result;
} /**
* The quick way to detect for a tier of devices.
* This method detects for all other types of phones,
* but excludes the iPhone and RichCSS Tier devices.
* @return detection of a mobile device in the less capable tier
*/
public boolean detectTierOtherPhones() {
if ((this.initCompleted == true) ||
(this.isTierGenericMobile == true))
return this.isTierGenericMobile; //Exclude devices in the other 2 categories
if (detectMobileLong()
&& !detectTierIphone()
&& !detectTierRichCss())
return true; return false;
}
}

Java判断是否为移动端的更多相关文章

  1. java 判断用户是PC端和还是APP端登陆

    java 判断用户是PC端和还是APP端登陆 public void getRequestHeader(HttpServletRequest request){ // 从浏览器获取请求头信息 Stri ...

  2. JAVA判断是否是移动端设备(手机和平板)访问

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 判断是否为移动端设备访问 * */ public class ...

  3. Java判断PC端还是移动端

    package com.*.*.*; import java.io.IOException;import java.util.regex.Matcher;import java.util.regex. ...

  4. java判断是移动端还是pc端

    // \b 是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔), // 字符串在编译时会被转码一次,所以是 "\\b" // \B 是单词内部逻辑间隔(连着的 ...

  5. java http post/get 服务端和客户端实现json传输

    注:本文来源于<java http post/get 服务端和客户端实现json传输> 最近需要写http post接口所以学习下. 总的还是不难直接上源码! PostHttpClient ...

  6. 使用Java判断字符串中的中文字符数量

    Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. char[] c = str.toCharArray(); for ...

  7. 判断浏览器是pc端还是手机端

    1. 判断浏览器是pc端还是手机端 <script type="text/javascript"> var browser = { versions: function ...

  8. Java判断回文数算法简单实现

    好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...

  9. PHP判断访问者手机移动端还是PC端的函数,亲测好用

    ,用手机访问PC端WWW域名的时候,自动判断跳转到移动端,用电脑访问M域名手机网站的时候,自动跳转到PC端,我们团队在开发erdaicms二代旅游CMS网站管理系统的时候(http://www.erd ...

随机推荐

  1. 【转】MySQL存储引擎中的MyISAM和InnoDB区别详解

    转自:http://www.jb51.net/article/62457.htm MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Ac ...

  2. [转]使用ThinkPHP框架快速开发网站(多图)

    本文转自:http://blog.csdn.net/ruby97/article/details/7574851 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkP ...

  3. c#异步多线程

    1.asyncrel = delegate.BeginInvoke实现委托异步调用. 2.异步等待 asyncrel.IsCompleted用于判断是否执行完毕 or EndInvoke用于等待执行完 ...

  4. Java系列学习(十三)-字符串

    1.字符串基础 概念:字符串本质是打包字符数组的对象,是java.lang.String类的实例 2.字符串的构造方法 public String() public String(byte[] byt ...

  5. Dancing Links X 学习笔记

    \(\\\) Definitions 双向链表:记录前后两个指针的链表,每个顺序关系都有双向的指针维护. \(Dancing\ Links\):双向十字循环链表,建立在二维关系上,每个元素记录上下左右 ...

  6. [Windows Server 2008] 查看PHP详细错误信息

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:查看IIS ...

  7. Java_Web三大框架之Hibernate+jsp+selvect+HQL查询数据

    俗话说:"好记性不如烂笔头".本人学习Hibernate也有一个星期了,对Hibernate也有一个初步的了解.下面对Hibernate显示数据做个笔记,使用租房系统的Hibern ...

  8. zabbix配置邮件报警(第四篇)

    zabbix配置邮件报警(第四篇) 邮件报警可采用本地邮件服务,也可以自定义脚本,这里我采用本地邮件服务报警 添加收件人

  9. Centos6.6 安装基于系统认证的vsftp服务

    一.介绍 vsftp是一款文件服务器软件,在文件共享,代码更新,文件备份中也是经常用到,以下是基本安装环境: 1)CentOS6.6 2)vsftpd-2.2.2 二.安装 $ yum install ...

  10. Cookie的实现

    Cookie是web server下发给浏览器的任意的一段文本,在后续的http 请求中,浏览器会将cookie带回给Web Server.同时在浏览器允许脚本执行的情况下,Cookie是可以被Jav ...