通过服务器检测 Android 的明显方法是从 User-Agent HTTP 标头中搜索“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, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19,但我不能只希望例如 QR 码阅读器应用程序打开 Chrome 而不是内置的 Android 浏览器,它具有无效的 UA。
是否有一个好技巧(javascript 调用?)可以跨设备和浏览器可靠地检测 Android?
编辑:看起来与 Galaxy S III 相同的问题,相同的用户代理字符串:Android 手机浏览器检测