2012-02-08 42 views
2

我试图检测Android的Android版本,如2.2 ... 4.0。我正在Asp.Net 4.0 MVC 3.0 C#中开发一个Web应用程序。我尝试过使用HttpBrowserCapabilitiesBase类。我怎样才能做到这一点?
所有的想法都表示赞赏。
谢谢大家。使用ASP.Net获取服务器端的Android版本

+0

您是否在您的研究中发现了[this](http://stackoverflow.com/q/8073800/1101070)问题? – 2012-02-08 21:01:13

+0

@Marvin Pinto是的,我遇到了这个问题,但是它并没有提到从服务器端代码来做它。谢谢 – SocialCircus 2012-02-08 21:04:06

+0

公平的,我只是想指出,如果你不确定客户端,因为你没有真的提到这一点。 – 2012-02-08 21:06:13

回答

0

您应该能够检查HttpRequest.UserAgent的值。

它看起来像是从该属性中检查user agent values,它应该包含“Android 2.2”,“Android 3.0”等。

+0

版本如何区分?如果Android 2.1至4.0需要支持某项功能,那该如何实现?我不想创建任何范围的数组。 – SocialCircus 2012-02-08 21:29:41

+0

socialCircus - 不是我处理过的与移动设备有关的区域,但是现代化器无法解决其中一些兼容性问题,而无需求助于switch/case语句,因为如果不支持html5功能,它将降低功能等。 – 2012-02-08 22:00:10

+0

@ socialCircus从用户代理字符串中提取确切的信息取决于您,可以使用正则表达式或子字符串来完成。为什么你要在服务器端检查UA,而不是在视图上发现浏览器功能,这有点超出我的想象。 – 48klocs 2012-02-09 16:52:29

0

取自mvcmob​​ile nuget模板,这是确定我们是否正在查看移动设备的一种方法。您可以编辑/重构,以适应:在控制器

public static bool IsSupportedMobileDevice(this HttpRequestBase request) 
{ 

    bool isMobile = request.Browser.IsMobileDevice; 
    string userAgent = request.UserAgent.ToLowerInvariant(); 

    isMobile = isMobile 
      || (userAgent.Contains("iphone") 
      || userAgent.Contains("blackberry") 
      || userAgent.Contains("mobile") 
      || userAgent.Contains("windows ce") 
      || userAgent.Contains("opera mini") 
      || userAgent.Contains("palm") 
      || userAgent.Contains("fennec") 
      || userAgent.Contains("adobeair") 
      || userAgent.Contains("ripple") 
     ); 
    return isMobile; 

} 

用法:

if (Request.IsSupportedMobileDevice()){...} 

这个模板的NuGet其实是非常有用的,值得拥有看一看。见:

http://visualstudiogallery.msdn.microsoft.com/9df9c61c-4d90-43e5-9aa1-a58786b7a1e4?SRC=VSIDE

此模板实际上功能通过创建视图引擎覆盖,当它检测在服务器侧的移动装置,从而,允许移动特定视图被呈现用于移动设备。我不得不说,迄今为止,在我的简短测试中它工作得很好。

[编辑] - 为iPhone,产生的userAgent是:

mozilla/5.0 (iphone; u; cpu iphone os 4_0 like mac os x; en-us) applewebkit/532.9 (khtml, like gecko) version/4.0.5 mobile/8a293 safari/6531.22.7 

和一个典型的Android:

Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 

你能因此分析的userAgent字符串,然后找到'版本'位于(在上面的示例中 - Android 2.3.3),因为我100%确定这是所有userAgent字符串中的常量。显然,这将是一个'非Android'设备范围乏味,但希望说明潜力。

+0

谢谢这会检查浏览器。我需要检测设备运行的操作系统的版本。 – SocialCircus 2012-02-08 21:31:23

+0

socialCircus - gotcha,我会看看如果我可以通过进一步的研究tmro揭示光明.. tho,该版本确实'包含'在该userAgent字符串中。看到我上面的编辑。 g'night现在! :) – 2012-02-08 21:42:50