C# 区分手机和平板电脑浏览器

C# 区分手机和平板电脑浏览器,c#,javascript,asp.net,mobile,webforms,C#,Javascript,Asp.net,Mobile,Webforms,我知道这个问题已经被活活打死了,但我不想这里有什么太复杂的事情 我们的网站上有一个仅与7英寸和10英寸平板电脑兼容的配套应用程序。我们只需要提醒那些设备上的用户我们的应用程序。问题是,我不能下决心去做。我的Galaxy S3有1280 x 720的屏幕,但显然不是平板电脑。我一生也无法找到一种方法来获得屏幕的物理尺寸。我提出的唯一解决方案是检测设备是否可以使用移动功能拨打电话。CanInitiateVoiceCall。不幸的是,老板对这个解决方案并不满意 所以。。。如何在web应用程序(服务器端

我知道这个问题已经被活活打死了,但我不想这里有什么太复杂的事情

我们的网站上有一个仅与7英寸和10英寸平板电脑兼容的配套应用程序。我们只需要提醒那些设备上的用户我们的应用程序。问题是,我不能下决心去做。我的Galaxy S3有1280 x 720的屏幕,但显然不是平板电脑。我一生也无法找到一种方法来获得屏幕的物理尺寸。我提出的唯一解决方案是检测设备是否可以使用
移动功能拨打电话。CanInitiateVoiceCall
。不幸的是,老板对这个解决方案并不满意

所以。。。如何在web应用程序(服务器端或客户端)中区分手机和平板电脑


更新:到目前为止,Android的最佳方法似乎是来自Android团队的一篇博文:所有Android手机在UserAgent字符串中都使用“Mobile”,因此检查“Mobile”和“Android”会告诉你它是否是手机,而“Android”应该是平板电脑。iOS设备应该同样简单——到目前为止,检查“iPhone”和“iPad”似乎已经奏效。

您可以尝试进行用户代理检测并搜索关键字,例如,所有非平板设备的用户代理上都有“Mobile Safari”关键字

我知道现在有点晚了,但我也在寻找同样的东西

有你想要的吗。您可以轻松地实现它,甚至可以查询api

对于ASP.NET应用程序,必须首先进行一次性初始化

public class Global : HttpApplication
{
   public const String WurflDataFilePath = "~/App_Data/wurfl.zip";
   private void Application_Start(Object sender, EventArgs e)
   {
       var wurflDataFile = HttpContext.Current.Server.MapPath(WurflDataFilePath);
       var configurer = new InMemoryConfigurer().MainFile(wurflDataFile);
       var manager = WURFLManagerBuilder.Build(configurer);
       HttpContext.Current.Cache[WurflManagerCacheKey] = manager;
   }
}  
然后像这样使用它

var device = WURFLManagerBuilder.Instance.GetDeviceForRequest(userAgent);
var isTablet = device.GetCapability("is_tablet");
var isSmartphone = device.GetCapability("is_smartphone");
有关更多信息,请查看


希望这能帮助其他人找到它。

“我们只需要提醒那些设备上的用户我们的应用程序”–为什么?如果设备具有适当的分辨率来显示您的内容,请不要将其挡在外面。让你的设计具有响应性,并支持任何设备。如果你真正想要的是区分手机和平板电脑,我认为从定义上讲,让手机成为手机的关键是它是否能打电话。我不确定你的最终目标是什么,但平板电脑/电脑/手机之间的界限变得非常模糊,能够打电话是唯一能让手机成为手机的东西。如果android手机和平板电脑都有足够大的分辨率来支持你的应用程序,您需要区分的两个设备之间有什么不同?答案应该是你用什么来决定你的决定取决于什么。@poke:不幸的是,我们没有编写应用程序(外包),现有的应用程序只与7英寸和10英寸的平板电脑明确兼容。如果不兼容设备上的用户跟随我们应用程序的链接,他们将只在Play Store上收到“您的设备不兼容”消息。所以基本上这是一个解决糟糕设计的方法。那么检查电话呼叫能力可能不是一个比较好的解决方案。一些Galaxy 7/10“平板电脑具有GSM天线,因此可以拨打电话(尽管IDK API会报告什么,或者如果运营商在构建操作系统时禁用此功能):仅仅“Mobile Safari”不起作用,因为手机和平板电脑(至少对于iOS设备)的用户代理中都有此功能。