我试图检测Android的Android版本,如2.2 ... 4.0。我正在Asp.Net 4.0 MVC 3.0 C#中开发一个Web应用程序。我尝试过使用HttpBrowserCapabilitiesBase
类。我怎样才能做到这一点?
所有的想法都表示赞赏。
谢谢大家。使用ASP.Net获取服务器端的Android版本
回答
您应该能够检查HttpRequest.UserAgent的值。
它看起来像是从该属性中检查user agent values,它应该包含“Android 2.2”,“Android 3.0”等。
版本如何区分?如果Android 2.1至4.0需要支持某项功能,那该如何实现?我不想创建任何范围的数组。 – SocialCircus 2012-02-08 21:29:41
socialCircus - 不是我处理过的与移动设备有关的区域,但是现代化器无法解决其中一些兼容性问题,而无需求助于switch/case语句,因为如果不支持html5功能,它将降低功能等。 – 2012-02-08 22:00:10
@ socialCircus从用户代理字符串中提取确切的信息取决于您,可以使用正则表达式或子字符串来完成。为什么你要在服务器端检查UA,而不是在视图上发现浏览器功能,这有点超出我的想象。 – 48klocs 2012-02-09 16:52:29
取自mvcmobile 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'设备范围乏味,但希望说明潜力。
谢谢这会检查浏览器。我需要检测设备运行的操作系统的版本。 – SocialCircus 2012-02-08 21:31:23
socialCircus - gotcha,我会看看如果我可以通过进一步的研究tmro揭示光明.. tho,该版本确实'包含'在该userAgent字符串中。看到我上面的编辑。 g'night现在! :) – 2012-02-08 21:42:50
WURLF http://wurfl.sourceforge.net/dotNet/可以做到这一点。很容易设置和使用
- 1. ASP.NET服务器端脚本
- 2. 如何使用PHP获取服务器端的版本名称/代码
- 3. 获取服务器端PHP脚本从Android运行apk调用
- 4. ASP.NET - 获取服务器本地IP
- 5. 客户端比服务器的版本(客户端API版本:1.24,服务器API版本:1.21)
- 6. 获取CheckBox服务器端的值端
- 7. 在服务器端获取本地IP地址的非服务器端方法?
- 8. 在服务器端使用asp.net的Android应用程序
- 9. 的Android GCM(Google云端通讯)服务器获取客户端
- 10. SVN客户端/服务器版本
- 11. 如何获取asp.net中服务器端的dropdownlistbox的多个值?
- 12. 发送请求到服务器端的文本使用asp.net
- 13. 使用服务器端脚本的
- 14. 在asp.net中获取服务器端的html输入值
- 15. 在ASP.NET MVC中获取服务器端的多选参数值
- 16. 获取用户Android版本
- 17. oracle客户端版本可以优于服务器版本吗?
- 18. 在运行时获取服务版本
- 19. 获取Java应用程序服务器名称和版本
- 20. 获取Android版本
- 21. 如何获取ASP.NET中服务器端的输入值(输入文本)?
- 22. 取消服务器端在asp.net提交funcion使用javascript
- 23. GetElementByID在服务器端,asp.net?
- 24. 服务器端验证asp.net
- 25. asp.net下拉服务器端
- 26. ASP.NET服务器端文化
- 27. ASP.NET验证服务器端
- 28. asp.net gridview jquery服务器端
- 29. Asp.net服务器mvc3.0端JavaScript
- 30. ASP.NET服务器端进度
您是否在您的研究中发现了[this](http://stackoverflow.com/q/8073800/1101070)问题? – 2012-02-08 21:01:13
@Marvin Pinto是的,我遇到了这个问题,但是它并没有提到从服务器端代码来做它。谢谢 – SocialCircus 2012-02-08 21:04:06
公平的,我只是想指出,如果你不确定客户端,因为你没有真的提到这一点。 – 2012-02-08 21:06:13