-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDeviceUtils.java
More file actions
147 lines (140 loc) · 6.83 KB
/
DeviceUtils.java
File metadata and controls
147 lines (140 loc) · 6.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package com.wang.code;
import javax.servlet.http.HttpServletRequest;
public class DeviceUtils {
/** 电脑上的IE或Firefox浏览器等的User-Agent关键词 */
private static String[] pcHeaders = new String[] { "Windows 98", "Windows ME", "Windows 2000", "Windows XP",
"Windows NT", "Ubuntu" };
/** 手机浏览器的User-Agent里的关键词 */
private static String[] mobileUserAgents = new String[] { "Nokia", // 诺基亚,有山寨机也写这个的,总还算是手机,Mozilla/5.0
// (Nokia5800
// XpressMusic)UC
// AppleWebkit(like
// Gecko)
// Safari/530
"SAMSUNG", // 三星手机
// SAMSUNG-GT-B7722/1.0+SHP/VPP/R5+Dolfin/1.5+Nextreaming+SMM-MMS/1.2.0+profile/MIDP-2.1+configuration/CLDC-1.1
"MIDP-2", // j2me2.0,Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2
// NokiaE75-1 /110.48.125 Profile/MIDP-2.1
// Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML like
// Gecko) Safari/413
"CLDC1.1", // M600/MIDP2.0/CLDC1.1/Screen-240X320
"SymbianOS", // 塞班系统的,
"MAUI", // MTK山寨机默认ua
"UNTRUSTED/1.0", // 疑似山寨机的ua,基本可以确定还是手机
"Windows CE", // Windows CE,Mozilla/4.0 (compatible; MSIE 6.0;
// Windows CE; IEMobile 7.11)
"iPhone", // iPhone是否也转wap?不管它,先区分出来再说。Mozilla/5.0 (iPhone; U; CPU
// iPhone OS 4_1 like Mac OS X; zh-cn) AppleWebKit/532.9
// (KHTML like Gecko) Mobile/8B117
"iPad", // iPad的ua,Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X;
// zh-cn) AppleWebKit/531.21.10 (KHTML like Gecko)
// Version/4.0.4 Mobile/7B367 Safari/531.21.10
"Android", // Android是否也转wap?Mozilla/5.0 (Linux; U; Android
// 2.1-update1; zh-cn; XT800 Build/TITA_M2_16.22.7)
// AppleWebKit/530.17 (KHTML like Gecko) Version/4.0
// Mobile Safari/530.17
"BlackBerry", // BlackBerry8310/2.7.0.106-4.5.0.182
"UCWEB", // ucweb是否只给wap页面? Nokia5800
// XpressMusic/UCWEB7.5.0.66/50/999
"ucweb", // 小写的ucweb貌似是uc的代理服务器Mozilla/6.0 (compatible; MSIE 6.0;)
// Opera ucweb-squid
"BREW", // 很奇怪的ua,例如:REW-Applet/0x20068888 (BREW/3.1.5.20; DeviceId:
// 40105; Lang: zhcn) ucweb-squid
"J2ME", // 很奇怪的ua,只有J2ME四个字母
"YULONG", // 宇龙手机,YULONG-CoolpadN68/10.14 IPANEL/2.0 CTC/1.0
"YuLong", // 还是宇龙
"COOLPAD", // 宇龙酷派YL-COOLPADS100/08.10.S100 POLARIS/2.9 CTC/1.0
"TIANYU", // 天语手机TIANYU-KTOUCH/V209/MIDP2.0/CLDC1.1/Screen-240X320
"TY-", // 天语,TY-F6229/701116_6215_V0230 JUPITOR/2.2 CTC/1.0
"K-Touch", // 还是天语K-Touch_N2200_CMCC/TBG110022_1223_V0801 MTK/6223
// Release/30.07.2008 Browser/WAP2.0
"Haier", // 海尔手机,Haier-HG-M217_CMCC/3.0 Release/12.1.2007
// Browser/WAP2.0
"DOPOD", // 多普达手机
"Lenovo", // 联想手机,Lenovo-P650WG/S100 LMP/LML Release/2010.02.22
// Profile/MIDP2.0 Configuration/CLDC1.1
"LENOVO", // 联想手机,比如:LENOVO-P780/176A
"HUAQIN", // 华勤手机
"AIGO-", // 爱国者居然也出过手机,AIGO-800C/2.04 TMSS-BROWSER/1.0.0 CTC/1.0
"CTC/1.0", // 含义不明
"CTC/2.0", // 含义不明
"CMCC", // 移动定制手机,K-Touch_N2200_CMCC/TBG110022_1223_V0801 MTK/6223
// Release/30.07.2008 Browser/WAP2.0
"DAXIAN", // 大显手机DAXIAN X180 UP.Browser/6.2.3.2(GUI) MMP/2.0
"MOT-", // 摩托罗拉,MOT-MOTOROKRE6/1.0 LinuxOS/2.4.20 Release/8.4.2006
// Browser/Opera8.00 Profile/MIDP2.0 Configuration/CLDC1.1
// Software/R533_G_11.10.54R
"SonyEricsson", // 索爱手机,SonyEricssonP990i/R100 Mozilla/4.0
// (compatible; MSIE 6.0; Symbian OS; 405) Opera
// 8.65 [zh-CN]
"GIONEE", // 金立手机
"HTC", // HTC手机
"ZTE", // 中兴手机,ZTE-A211/P109A2V1.0.0/WAP2.0 Profile
"HUAWEI", // 华为手机,
"webOS", // palm手机,Mozilla/5.0 (webOS/1.4.5; U; zh-CN)
// AppleWebKit/532.2 (KHTML like Gecko) Version/1.0
// Safari/532.2 Pre/1.0
"GoBrowser", // 3g GoBrowser.User-Agent=Nokia5230/GoBrowser/2.0.290
// Safari
"IEMobile", // Windows CE手机自带浏览器,
"WAP2.0"// 支持wap 2.0的
};
/**
* 根据当前请求的特征,判断该请求是否来自手机终端,主要检测特殊的头信息,以及user-Agent这个header
*
* @param request
* http请求
* @return 如果命中手机特征规则,则返回对应的特征字符串
*/
public static boolean isMobileDevice(HttpServletRequest request) {
boolean isMobile = false;
boolean pcFlag = false;
boolean mobileFlag = false;
String userAgent = request.getHeader("user-agent");
for (int i = 0; !mobileFlag && userAgent != null && !userAgent.trim().equals("")
&& i < mobileUserAgents.length; i++) {
if (userAgent.contains(mobileUserAgents[i])) {
mobileFlag = true;
break;
}
}
for (int i = 0; userAgent != null && !userAgent.trim().equals("") && i < pcHeaders.length; i++) {
if (userAgent.contains(pcHeaders[i])) {
pcFlag = true;
break;
}
}
if (mobileFlag == true && pcFlag == false) {
isMobile = true;
}
return isMobile;// false pc true mobile
}
/**
* 判断是否为IOS系统访问
*
* @param request
* @return
*/
public static boolean isIOSDevice(HttpServletRequest request) {
boolean isMobile = false;
final String[] ios_sys = { "iPhone", "iPad", "iPod" };
String userAgent = request.getHeader("user-agent");
for (int i = 0; !isMobile && userAgent != null && !userAgent.trim().equals("") && i < ios_sys.length; i++) {
if (userAgent.contains(ios_sys[i])) {
isMobile = true;
break;
}
}
return isMobile;//
}
/**
* 判断是否是微信访问
*
* @param request
* @return
*/
public static boolean isWeChat(HttpServletRequest request) {
String userAgent = request.getHeader("user-agent").toLowerCase();
return userAgent == null || userAgent.indexOf("micromessenger") == -1 ? false : true;
}
}