c# - 安卓手机浏览器检测

标签 c# javascript android .net samsung-mobile

我有一个网络应用程序,手机用户可以在其中看到针对移动设备优化的网站。新的 Samsung Galaxy SIII 用户代理没有提供请求来自手机的线索。检测手机的最佳做法是什么?

我知道 javascript 功能检测(即 modernizer),但我希望有更好的东西。以下是三星 Galaxy SIII 用户代理:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24

编辑:SIII 有两个可能的用户代理。以上是“桌面”版本。好玩的东西。有关详细信息,请参阅下面的链接。

http://www.anandtech.com/Show/Index/5310?cPage=19&all=False&sort=0&page=5&slug=samsung-galaxy-nexus-ice-cream-sandwich-review

最佳答案

看看那个用户代理,我不得不说,它很难与非手持设备区分开来。

浏览器检测的问题在于很容易调整用户代理字符串,因此您永远不知道服务器告诉您的内容是否真实。

在这种情况下你有两个选择:

  • 您可以检查手机发送的每一个 header ,也许看看是否有一个 header 可以使其独一无二

  • 或者通过测试页面加载时间等找到某种变通方法...,作为一个异想天开的例子,手持设备上的浏览器呈现页面的速度通常比桌面浏览器慢一点,所以在测试每一个可能的移动设备之后设备 something like :

-

if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
 // some code..
}

您可以查看是否只有一个简单脚本的页面没有在理想时间加载。

你明白了。

另外,尝试去这里看看它是否能检测到你:http://detectmobilebrowsers.com/

关于c# - 安卓手机浏览器检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11597940/

相关文章:

c# - 主键与唯一键冲突异常处理

javascript - 将指向对象方法的指针安全地传递给 google.maps.event.addListener

java - Android TextUtils isEmpty vs String.isEmpty

javascript - 单击元素时添加一个类,单击其他地方时将其删除

javascript - 如何在 Rails 应用程序中实现 Highcharts 柱形钻取图表?

android - 在安装 Cordova (PhoneGap) 期间,我收到类似 "npm WARN engine Cordova-js@3. 8.0: wanted:..."的警告

java - 如何在我的 Android 应用中实现 7 天免费试用期的年度订阅状态为 'account hold'?

c# - Linq to Entity Join 和 Group By

c# - 您可以强制 Parallel.Invoke 使用多线程吗?

c# - Entity Framework 4 级联更新?