C# 如何检测平板电脑(任何)请求?

C# 如何检测平板电脑(任何)请求?,c#,asp.net,C#,Asp.net,要检测手机,但同时检测平板电脑一样的手机,我需要的功能,检查是否有平板电脑或功能,检查屏幕大小的设备 谢谢,这是我使用的ScreenPixelsWidth和ScreenPixelsHeight的作品,这是需要的代码 if (Request.Browser.IsMobileDevice) { Response.Redirect("/mobile/Login.htm");` } int-wight=Request.Browser.ScreenPixelsWidth; int hei

要检测手机,但同时检测平板电脑一样的手机,我需要的功能,检查是否有平板电脑或功能,检查屏幕大小的设备

谢谢,这是我使用的ScreenPixelsWidth和ScreenPixelsHeight的作品,这是需要的代码

 if (Request.Browser.IsMobileDevice)
 {
     Response.Redirect("/mobile/Login.htm");`
 }
int-wight=Request.Browser.ScreenPixelsWidth;
int height=Request.Browser.screen像素高度;

如果(Reopest.BuffSer.ISMobile Engile and WiTe< 720 & &高度)可以使用StudioPixelsWrand和ScreenPixelsHeight(),您可以定义一个阈值,在该阈值中,您可以考虑是否定期或移动版本。


解决此问题的方法还有很多,但由于您已经在使用HttpBrowserCapabilities类,您最好使用这两个属性。

我也遇到过类似的问题,并尝试使用: HttpContext.Request.Browser.ScreenPixelsWidth

然而,不管设备(iphone或ipad)如何,它总是返回640像素的值。我通过创建一个静态方法来检查用户代理字符串,从而解决了这个问题

 int wight = Request.Browser.ScreenPixelsWidth;
                int height = Request.Browser.ScreenPixelsHeight;

                if (Request.Browser.IsMobileDevice && wight < 720 && height<1280)
            {
               Response.Redirect("/mobile/Login.htm");
            }
然后在我的控制器中:

public class DeviceHelper
{
    public static bool IsTablet(string userAgent, bool isMobile)
    {
        Regex r = new Regex("ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle|nexus");
        bool isTablet = r.IsMatch(userAgent) && isMobile;
        return isTablet;
    }
}

ScreenPixelsWidth始终返回640,因此在检测手机时没有用处。我发现这很有效:

if(DeviceHelper.IsTablet(Request.UserAgent, Request.Browser.IsMobileDevice))
     return Redirect("..."); // redirect to tablet url

我已经编辑了你的标题。请看“”,其中的共识是“不,他们不应该”。@acb该链接不适用于本例。这是我们正在讨论的浏览器。谢谢”这是我使用的ScreenPixelsWidth和ScreenPixelsHeight这是代码,如果需要它
int-wight=Request.Browser.ScreenPixelsWidth;int-height=Request.Browser.ScreenPixelsHeight;if(Request.Browser.IsMobileDevice&&wight<720&&heightI认为这种方式比代理字符串模式匹配更有效。这是否意味着
Request.Browser.IsMobileDevice
对手机和平板电脑都返回true?@IanCampbell是的,因为你可以用一只手同时携带它们!更有可能是MS将其留给了扩展,比如拿起slack(尽管我认为该插件的免费版本仍然以移动方式报告所有内容)Regex应该以这种方式实例化:
Regex r=newregex(“ipad | android | android 3.0 | xoom | sch-i800 | playbook | tablet | kindle | nexus”**RegexOptions.IgnoreCase**
不错的解决方案。差不多一年后,RegEx的更新:
RegEx r=new RegEx(“平板电脑、iPad、PlayBook、BB10、Z30、Nexus 10、Nexus 7、GT-P、SCH-I800、Xoom、Kindle、Silk、KFAPWI”、RegexOptions.IgnoreCase)
。这也在Chrome DevTools设备模式下进行了测试。因此,使用此解决方案,我们必须在新设备上市时更新regex。跟踪全球所有设备将是一件痛苦的事情。Browser.CanInitiateVoiceCall在Android移动Chrome上返回false。我尝试了Galaxy S5和Pixel 3。我遇到了同样的问题/我的Android手机,其中CanInitiateVoiceCall在Chrome浏览器中返回false。
public static bool IsPhoneDevice(this HttpBrowserCapabilitiesBase Browser)
{
      return (Browser.IsMobileDevice && Browser.CanInitiateVoiceCall);
}