如何检测Android平板电脑一般.用户代理?

Clo*_*ign 102 android device-detection

我到处寻找.我们正在使用Motorola Zoom来尝试我们的平板电脑网站测试.问题是Android Useragent是一般的Useragent,平板电脑Android和移动Android之间没有区别.我不想只针对像Xoom Useragent这样的特定设备,因为Android很可能会在不久的将来出现在多个平板设备上.

我们正在使用Umbraco CMS,我们已经考虑使用51Degrees.mobi解决方案,目前这不适合我们的需求.或许在将来.我知道51Degrees和Umbraco的一些人将要进行一些整合到Umbraco,但最终的项目可能不会出现几个月.
因此,为什么我们要检测Android平板电脑的Useragent String,并且不要像现在这样直接访问我们的移动网站.

如果有人知道如何检测和Android平板电脑一般,不是具体的设备将是非常有帮助的.

Com*_*are 111

问题是Android用户代理是一般用户代理,平板电脑Android和移动Android之间没有区别.

这是不正确的.移动Android在User-Agent标头中有"Mobile"字符串.平板电脑Android没有.

  • 这个答案并不完全正确.有很多平板电脑 - 甚至是最新的Kindle Fire--在userAgent字符串中报告"Mobile"Safari.除非它是userAgent和可能支持分辨率检测的组合,否则此时似乎没有一种可靠的方法来检测平板电脑与手机. (26认同)
  • 假!三星galaxy tab是显而易见的平板电脑,但它在用户代理中具有"移动性" (21认同)
  • @yoavf:这似乎是用XOOM的Android 3.1更新修复的.我拥有一个XOOM并且只测试了它 - 没有"移动". (6认同)
  • 你是对的.我只是在寻找一个包含Android的字符串.我不得不搜索包含Android和!mobile的字符串.发现了Tim Bray关于此的文章. (3认同)

小智 20

@Carlos:在他的文章中,Tim Bray推荐这一点(谷歌的另一篇文章也是如此),但不幸的是,它并未被所有平板电脑制造商应用.

...我们建议大型设备制造商从用户代理中删除"移动"...

我见过的大多数Android平板电脑用户代理字符串都使用移动游戏,例如三星Galaxy Tab:

Mozilla的/ 5.0(Linux的; U; Android 2.2的; EN-US; SCH-I800建造/升级Froyo)为AppleWebKit/533.1(KHTML,例如Gecko)版本/ 4.0移动版Safari/533.1

所以目前我正在检查设备名称以检测Android平板电脑.只要市场上只有几款型号,那就没关系,但很快这将是一个丑陋的解决方案.

至少在XOOM的情况下,移动部分似乎已经消失了:

Mozilla的/ 5.0(Linux的; U; Android 3.0的; EN-US; Xoom的构建/ HRI39)为AppleWebKit/534.13(KHTML,例如Gecko)版本/ 4.0的Safari/534.13

但由于目前只有Andorid 3.x的平板电脑,检查Android 3就足够了.


Jor*_*sys 12

Mo'还能更好地检测"移动"用户代理

虽然您可能仍希望在User-Agent中检测"android"以实现特定于Android的功能,例如触摸屏优化,但我们的主要信息是:如果您的移动网站依赖于UA嗅探,请检测字符串"mobile"用户代理中的"android",而不仅仅是"android".这有助于为您的移动设备和平板电脑访问者提供适

通过浏览器检测Android设备

 < script language="javascript"> <!--
     var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
              if (mobile) {
                  alert("MOBILE DEVICE DETECTED");
                  document.write("<b>----------------------------------------<br>")
                  document.write("<b>" + navigator.userAgent + "<br>")
                  document.write("<b>----------------------------------------<br>")
                  var userAgent = navigator.userAgent.toLowerCase();
                  if ((userAgent.search("android") > -1) && (userAgent.search("mobile") > -1))
                         document.write("<b> ANDROID MOBILE <br>")
                   else if ((userAgent.search("android") > -1) && !(userAgent.search("mobile") > -1))
                       document.write("<b> ANDROID TABLET <br>")
              }
              else
                  alert("NO MOBILE DEVICE DETECTED"); //--> </script>
Run Code Online (Sandbox Code Playgroud)

  • 这非常有效.我为iPad和iPhone/iPod添加了这个.`else if(userAgent.search("ipad")> -1)document.write("<b> iPad <br>")否则if((userAgent.search("iphone")> -1)||(userAgent) .search("ipod")> -1))document.write("<b> iPhone或iPod <br>")` (3认同)

Cod*_*uze 8

您可以尝试使用此脚本,因为您不希望仅定位Xoom.我没有Xoom,但应该工作.

function mobile_detect(mobile,tablet,mobile_redirect,tablet_redirect,debug) {
var ismobile = (/iphone|ipod|android|blackberry|opera|mini|windows\sce|palm|smartphone|iemobile/i.test(navigator.userAgent.toLowerCase()));
var istablet = (/ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle/i.test(navigator.userAgent.toLowerCase()));

if (debug == true) {
    alert(navigator.userAgent);
}

if (ismobile && mobile==true) {
    if (debug == true) {
        alert("Mobile Browser");
    }
    window.location = mobile_redirect;
} else if (istablet && tablet==true) {
    if (debug == true) {
        alert("Tablet Browser");
    }
    window.location = tablet_redirect;
}
}
Run Code Online (Sandbox Code Playgroud)

我在github上创建了一个项目.检查出来 - https://github.com/codefuze/js-mobile-tablet-redirect.如果有任何错误,请随时提交问题!


Sum*_*man 6

一旦我在用户代理中检测到Android,这就是我区分平板电脑和智能手机浏览器的方式(这是使用Python,但对其他编程语言来说同样简单):

if ("Android" in agent):
  if ("Mobile" in agent):
    deviceType = "Phone"
  else:
    deviceType = "Tablet"
Run Code Online (Sandbox Code Playgroud)

更新:根据以下评论反映在Android上使用Chrome.


Jal*_*kib 5

基于此站点上的代理字符串:

http://www.webapps-online.com/online-tools/user-agent-strings
Run Code Online (Sandbox Code Playgroud)

这个结果出现了:
首先:

所有平板设备都有:
1. 平板电脑
2. iPad

第二:

所有电话设备都有:
1. 手机
2. 电话

第三:

平板电脑和手机设备有:
1. Android

如果您可以逐级检测,我认为结果 90% 是正确的。就像 SharePoint 设备渠道一样。