我試圖檢測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