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