我到处寻找。我们正在使用Motorola Zoom来尝试我们的平板电脑网站测试。 问题是Android Useragent是一般的Useragent,平板电脑Android和移动Android之间没有区别。我不想只针对像Xoom Useragent这样的特定设备,因为Android很可能会在不久的将来出现在多个平板设备上。
我们正在使用Umbraco CMS,我们已经考虑使用51Degrees.mobi解决方案,目前这不适合我们的需求。或许在将来。我知道51Degrees和Umbraco的一些人将要进行一些整合到Umbraco,但最终的项目可能不会在几个月内出现。
因此,为什么我们要检测Android平板电脑的Useragent字符串,并且不要像现在这样直接访问我们的移动网站。
如果有人知道如何检测Android平板电脑,那么特定设备不会非常有用。
答案 0 :(得分:109)
问题是Android用户代理是一般用户代理,平板电脑Android和移动Android之间没有区别。
这是不正确的。移动Android在User-Agent标头中有“Mobile”字符串。 Tablet Android没有。
答案 1 :(得分:20)
@Carlos: 在他的文章中,Tim Bray建议这样做(和另一个post by Google一样),但遗憾的是并没有被所有平板电脑制造商应用。
...我们建议大型设备制造商从用户代理中删除“移动”......
我见过的大多数Android平板电脑用户代理字符串都使用移动版Safari,例如三星Galaxy Tab:
Mozilla / 5.0(Linux; U; Android 2.2; zh-CN; SCH-I800 Build / FROYO)AppleWebKit / 533.1(KHTML,类似Gecko)版本/ 4.0 Mobile Safari / 533.1
所以目前我正在检查设备名称以检测Android平板电脑。只要市场上只有几款型号,那就没关系,但很快这将是一个难看的解决方案。
至少在XOOM的情况下,移动部分似乎已经消失了:
Mozilla / 5.0(Linux; U; Android 3.0; en-us; Xoom Build / HRI39)AppleWebKit / 534.13(KHTML,类似Gecko)版本/ 4.0 Safari / 534.13
但由于目前只有平板电脑使用Andorid 3.x,因此检查Android 3就足够了。
答案 2 :(得分:12)
<强> Mo’ better to also detect “mobile” user-agent 强>
虽然您可能仍想在User-Agent中检测到“android” 实现Android特有的功能,如触摸屏 优化,我们的主要信息是:您的移动网站应该依赖 UA嗅探,请检测字符串“mobile”和“android” 在User-Agent中不仅仅是“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>
答案 3 :(得分: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;
}
}
我在github上创建了一个项目。看看 - https://github.com/codefuze/js-mobile-tablet-redirect。如果有任何问题,请随时提交问题!
答案 4 :(得分:6)
一旦我在用户代理中检测到Android,这就是我区分平板电脑和智能手机浏览器的方式(这是使用Python,但对其他编程语言同样简单):
if ("Android" in agent):
if ("Mobile" in agent):
deviceType = "Phone"
else:
deviceType = "Tablet"
更新:根据以下评论反映在Android上使用Chrome。
答案 5 :(得分:3)
基于此网站上的代理字符串:
http://www.webapps-online.com/online-tools/user-agent-strings
结果出现了:
第一:
所有平板电脑设备都有:
1.平板电脑 2. iPad
第二:
所有电话设备都有:
1.移动
2.电话
第三:
平板电脑和手机设备有:
1. Android
如果您可以逐级检测,我认为结果是90%为真。与SharePoint设备频道类似。
答案 6 :(得分:2)
以下是我使用的内容:
public static boolean onTablet()
{
int intScreenSize = getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;
return (intScreenSize == Configuration.SCREENLAYOUT_SIZE_LARGE) // LARGE
|| (intScreenSize == Configuration.SCREENLAYOUT_SIZE_LARGE + 1); // Configuration.SCREENLAYOUT_SIZE_XLARGE
}
答案 7 :(得分:2)
虽然我们不能说某些平板电脑是否省略了“移动”,但许多包括三星Galaxy Tab 做的用户代理都有移动设备,因此无法在Android平板电脑和Android之间进行检测电话,而不是检查模型细节。除非您计划每月更新和扩展设备列表,否则此恕我直言是浪费时间。
不幸的是,此处最好的解决方案是向Google投诉并让他们修复Chrome for Android,以便添加一些文字来识别移动设备和平板电脑。在字符串中的特定位置甚至单个字母M OR T就足够了,但我想这太有道理了。
答案 8 :(得分:1)
如果你使用“移动”的缺席,那么它几乎是正确的。 但是有HTC Sensation 4G(4.3英寸与Android 2.X)不发送Mobile关键字。
您可能希望单独处理它的原因是iframes
等。
答案 9 :(得分:1)
Xoom在用户代理中有单词Xoom:Mozilla / 5.0(Linux; U; Android 3.0.1; en-us; Xoom Build / HRI66)AppleWebKit / 534.13(KHTML,类似Gecko)版本/ 4.0 Safari / 534.13
Galaxy Tab在用户代理中有“Mobile”:Mozilla / 5.0(Linux; U; Android 2.2; en-us; SCH-I800 Build / FROYO)AppleWebKit / 533.1(KHTML,与Gecko一样)Version / 4.0 Mobile Safari浏览器/ 533.1
因此,很容易检测Xoom,很难检测特定的Android版本是否可移动。
答案 10 :(得分:1)
大多数现代平板电脑都运行蜂窝,即3.x 没有手机默认运行3.x. 目前运行2.x的大多数平板电脑都具有较少的容量,并且无论如何都可能更适合移动网站。 我知道它并不完美......但我想它比没有移动设备准确得多......
答案 11 :(得分:1)
虽然移动Android可能在其用户代理字符串中有“移动”,但如果它在平板电脑上使用Opera Mobile for Android会怎么样?它的用户代理字符串中仍然会有“移动”,但应显示平板电脑大小的网站。 你需要测试“mobile”之前没有“opera”而不仅仅是“mobile”
或者你可以忘掉Opera Mobile。
答案 12 :(得分:1)
我建议使用Categorizr来检测用户是否在平板电脑上。您可以查看分类程序测试结果here。
答案 13 :(得分:0)
51Degrees测试版,1.0.1.6和最新稳定版1.0.2.2(2011年4月28日)现在能够嗅到平板电脑。基本上是:
string capability = Request.Browser["is_tablet"];
希望这会对你有所帮助。
答案 14 :(得分:0)
尝试OpenDDR,与大多数其他解决方案不同,它是免费的。