先上代码:

var UA = window.navigator.userAgent.toLocaleLowerCase()

if(/iphone|ipad|ipod/.test(UA)){//ios

}else if(/gt-|sm-|sch-/.test(UA)){ //三星

}else if(/huawei|honor/.test(UA)){ //华为

}else{//其他手机

}

=======================

从UA看厂商

最近手上的H5平台要兼容各种屏幕大小,又由于平台生产出的图片尺寸的限制,为了使图片不变形,不裁切,只能采用宽方向压缩的方案进行处理,具体适配方案讨论可以参看另一篇BLOG。如果有好的屏幕适配方案,可以联系我一起讨论哈。

现在我们进入正题,看看各大厂商的UA: 首先来看

三星:三星不愧是大厂,各系列产品清晰的呈现在UA里面,而且UA的规则也是非常统一的,根据不同产品线,分为GT-,SM-,SCH-开头的UA,可以通过/GT-|SM-|SCH-/ig直接选择出三星系列的手机。

小米:小米的UA简直是一团乱,各种奇葩特征,简直不忍直视,看起来使用机型来命名的,但也不全是,比如红米有几种:redmi, HM,2014501之类的各种命名规则,对小米的UA检测,估计只能使用枚举的正则了:/HM|RedMi|Mi/ig,不过这种方式难保完整和齐全。

华为:作为国内一线大厂,华为的UA可圈可点,和三星有些类似,华为的UA是按照产品线来进行标注识别的,主要分为huawei(华为)和honor(荣耀)两个系列,所以华为的UA识别也和简单:/huawei|honor/ig一个正则足够了。

OPPO:出乎意料的oppo手机相当的多,看来oppo的营销做得相当不错啊,不过他们家的UA已经超越小米到了令人发指的程度,同一款手机有各种不同的表达,简直崩溃,更可怕的是,根本没法通过简单正则判断是不是oppo手机。

vivo:这个厂的手机UA做的相当规范,不管什么型号,至少都是以vivo开头,这样就可以通过简单正则判断他了,比如/vivo/ig

另外一些杂牌手机,确实很多,android的痛点也就在这里了,各种碎片化,完全没有章法。

【附录】从访问日志里提取的货真价实ua

三星:

GT-I9152P Build/JLS36C

SM-E7000 Build/KTU84P

SM-G9200 Build/LMY47X

GT-I9128I Build/JDQ39

GT-I9500 Build/JDQ39

SM-N9008V Build/LRX21V

SM-N7506V Build/JLS36C

SM-G3609 Build/KTU84P

SCH-W2013 Build/IMM76D

小米:

HM NOTE 1LTE Build/KTU84P

Redmi Note 2 Build/LRX22G

m1 Build/KTU84P

2014501 Build/KOT49H

2014011 Build/HM2014011

2013022 Build/HM2013022

MI-ONE Plus Build/GINGERBREAD

华为:

HUAWEI G6-C00 Build/HuaweiG6-C00

HUAWEI C8816D Build/HuaweiC8816D

PE-TL00M Build/HuaweiPE-TL00M

PLK-AL10 Build/HONORPLK-AL10(荣耀系列)

Che2-TL00 Build/HonorChe2-TL00

H30-U10 Build/HuaweiH30-U10

SCL-AL00 Build/HonorSCL-AL00

PE-TL20 Build/HuaweiPE-TL20

H30-U10 Build/HuaweiH30-U10

H60-L01 Build/HDH60-L01

OPPO:

OPPO R7 Build/KTU84P

OPPO R7t Build/KTU84P

R7007 Build/JLS36C

R2017 Build/JLS36C

R6007 Build/JLS36C

1105 Build/KTU84P

N5117 Build/JLS36C

M571C Build/LMY47D

R7Plus Build/LRX21M

X909T Build/JDQ39

A31t Build/KTU84P

A31 Build/KTU84P

R8207 Build/KTU84P

R833T Build/JDQ39

vivo:

vivo Y13iL Build/KTU84P

vivo X5Pro D Build/LRX21M

vivo Y22L Build/JLS36C

vivo Y13T Build/JDQ39

vivo X5Max Build/KTU84P

一加:

ONE A2001 Build/LMY48W

酷派:

Coolpad 8297 Build/JDQ39

SK1-02 Build/KTU84P

华硕:

ASUS_Z00ADB Build/LRX21V

魅族:

M578C Build/LMY47D

MX5 Build/LRX22C

M571C Build/LMY47D

HTC:

HTC T528d Build/IMM76D

HTC One X Build/IML74K

HTC M8t Build/LRX22G

联想:

Lenovo A360t Build/KOT49H

美图:

MeituM2 Build/JDQ39

MeituM4 Build/JDQ39

SOYN:

L50t Build/17.1.E.2.67

uimi:

UIMI F7 Build/KOT49H

乐视: X600 Build/ABXCNOP5000609151S

努比亚: NX505J Build/KVT49L

NX511J Build/LRX22G

金立: F103 Build/LRX21M

V188 Build/KOT49H

NX601J Build/KVT49L

中兴:

ZTE G718C Build/KVT49L

杂牌: Q001 Build/KOT49H(欧沃)

Aquaris M5 Build/LRX22G

ZZBAO_Z5E Build/KTU84M(掌中宝)

Nexus 4 Build/LRX22C(google)

搬运完成~~~~

java手机ua_通过UA判断手机的类型相关推荐

  1. RomUtil【Android判断手机ROM,用于判断手机机型】

    参考资料 Android判断手机ROM 正文 有时候需要判断手机系统的ROM,检测ROM是MIUI.EMUI还是Flyme,可以使用getprop命令,去系统build.prop文件查找是否有对应属性 ...

  2. android 双卡手机发短信/判断手机是否为双卡

    本文转自:http://blog.csdn.net/xyz_lmn/article/details/7900439 try {Class<?> smsManagerClass = null ...

  3. 网页php如何判断登录手机串号_php判断手机段登录,以及phpcms手机PC双模板调用...

    首先一段php代码判断是否为手机浏览: function isMobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTTP ...

  4. Java web应用中如何判断Web容器类型

    问题背景:最近在开发一个人行的项目,由于不同的商行所使用的WEB容器不一样,导致同样的代码在不同的容器中运行的效果不一样.因此想在代码中添加容器判断,从而让应用自动选择不同的实现. 问题描述:开发阶段 ...

  5. django项目内部的views层判断手机访问还是电脑访问

    在做网站时,一般都会通过打包html来制作两个界面,一个提供给电脑端,一个提供给手机端,避免因为兼容性差的问题,界面会变得很丑.当然,如果能保证纯bootstrap开发html界面,则不需要考虑这个问 ...

  6. [转载]JAVA号码工具类:实现手机固话号码判断与区号截取

    工具类说明 该工具类主要是用于判断号码的类型,如果是手机类型,则返回号码前7位,便于后面继续判断号码归属地:如果是固话类型,则截取固话的区号,同样也是为了后面判断号码的归属地. 在获取到这些信息之后, ...

  7. php 判断当前手机类型_php中HTTP_USER_AGENT判断手机类型的函数

    有关判断手机类型的方法,脚本学堂之前的文章有所提及. 相关参考文章: 判断是否手机访问 php判断是否手机访问的代码 用HTTP_USER_AGENT判断手机类型,代码如下: /** * 判断手机类型 ...

  8. JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面...

    JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html 1 function is_weixin() { ...

  9. android 动态录音权限,Android如何判断手机是否有录音权限的工具类

    作用 判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 测试环境 这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android ...

最新文章

  1. 毕业三年薪水翻三倍!?你想要吗?
  2. linux 使cpu使用率升高_Linux程序性能优化:CPU的上下文切换
  3. 关于java类型数据组的调用
  4. Android4.0 修改系统屏幕分辨率方法
  5. Z-Stack Home Developer's Guide—3. The Home Automation Profile and the Sample Applications中文翻译
  6. The path C:\Oracle\Middleware\wlserver_10.3 contains the wrong version of WebLogic Server. Expect
  7. NYOJ 81:炮兵阵地(状压DP)
  8. 什么是港美股窝轮(Warrants)?
  9. Matlab之聚类分析
  10. Murex 快速风险分析引擎
  11. 关于windows下的System32与SysWOW64两个文件夹
  12. 计算机设计大赛作品抄袭会怎么样,如何界定借鉴和抄袭?看这7位设计大咖怎么说!...
  13. PhpSpreadsheet VS Box\Spout读取excel性能对比
  14. 可靠传输的实现机制——回退N帧协议GBN(Go Back N)
  15. 操作系统的概念、四个特征以及os的发展和分类
  16. java中字符串 MD5密码的加密与验证
  17. vue中获取/操作组件中的dom元素
  18. too many pod 节点pod总数超出限制
  19. Matlab傅里叶级数展开(附结果图)
  20. BZOJ 1502 NOI2005 月下柠檬树 Simpson自适应公式

热门文章

  1. 如何绘制大气磅礴的水墨字?
  2. 华展云-让展览更高效 2017第三届中国嘉兴国际集成吊顶产业博览会、国际集成家居暨顶墙集成博览会会刊(参展商名录) 展会名称: 2017年第3届中国(嘉兴)国际集成吊顶产业博览会暨国际集成家居博览
  3. 二十三、动网格Smoothing Diffusion方法及实例
  4. 数据结构折半查找例题_数据结构查找习题及答案
  5. 中山大学计算机pK国防科技大学,请问读中山大学好还是读国防科技大学好
  6. 杰理之SDK 开发方式【篇】
  7. 多晴转云h_天气变化的说法有哪些?
  8. 桌面搜索之战仍在继续-打哈欠? 内部MSN桌面搜索
  9. C语言/C++基础之元旦新年倒计时程序包含天、时、分、秒(附源码)
  10. 矿产资源利用现状调查成果与矿产资源储量库衔接软件