我试图检测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. 如何使用PHP获取服务器端的版本名称/代码
- 2. 获取服务器端PHP脚本从Android运行apk调用
- 3. ASP.NET - 获取服务器本地IP
- 4. 在服务器端获取本地IP地址的非服务器端方法?
- 5. 如何获取asp.net中服务器端的dropdownlistbox的多个值?
- 6. 发送请求到服务器端的文本使用asp.net
- 7. 使用服务器端脚本的
- 8. 获取用户Android版本
- 9. 在运行时获取服务版本
- 10. 如何获取ASP.NET中服务器端的输入值(输入文本)?
- 11. 取消服务器端在asp.net提交funcion使用javascript
- 12. Web服务版本控制和服务器端处理
- 13. 禁用asp.net按钮的服务器端
- 14. 服务器端服务调用获取连接拒绝
- 15. ASP.NET服务器端文化
- 16. ASP.NET服务器端进度
- 17. asp.net下拉服务器端
- 18. ASP.NET验证服务器端
- 19. Android的C2DM服务器端
- 20. 如何禁用客户端脚本块服务器端(asp.net)
- 21. 获取ASP.NET开发服务器端口号
- 22. 在asp.net服务器端page_load事件中获取JS返回值
- 23. 从服务器获取支持的TLS版本
- 24. 使用Web服务API获取版本层次结构
- 25. NodeJS:如何获取服务器端口?
- 26. 服务器端获取请求
- 27. Play Framework获取资产服务器端
- 28. ADO获取服务器端游标
- 29. 获取茉莉花在服务器端
- 30. 获取请求无效服务器端
您是否在您的研究中发现了[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