通过服务器检测 Android 的明显方法是从 User-Agent HTTP header 中搜索“Android”字符串。但是 - 我曾提示这在某些设备上不起作用(例如在我的 HTC Evo 中),它们未被检测为 Android。 whatsmyuseragent.com 为我的 HTC Evo 3D 网络浏览器提供了:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24 。没有 Android 字符串或版本。可能是设备上的安全软件更改了它,或者 HTC 特定的问题,不确定。
显然,同一设备上的 Android Chrome 有另一个更好的 UA:Mozilla/5.0(Linux;Android 4.0.3;HTC EVO 3D X515m Build/IML74K)AppleWebKit/535.19(KHTML,如 Gecko)Chrome/18.0 .1025.166 Mobile Safari/535.19 ,但我不能只希望例如QR 码阅读器应用程序打开 Chrome 而不是内置的 Android 浏览器,后者具有无效的 UA。
是否有一个好的技巧(javascript 调用?)来跨设备和浏览器可靠地检测 Android?
编辑: 看起来与 Galaxy S III 有同样的问题,相同的用户代理字符串:Android Phone Browser Detection
最佳答案
看起来我在 Android 网络浏览器设置中选择了“显示桌面版本”。一旦关闭,用户代理就在 Android 内部。这似乎是 ICS 的一个功能,HTC 不应该受到指责:谷歌提供了错误的用户代理,我看到它发生在许多不同的手机上。
关于android - 无法在 Web 服务器中检测到 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14642278/