Click here to Skip to main content
6,629,885 members and growing! (21,693 online)
Email Password   helpLost your password?
Web Development » ASP.NET » Howto     Beginner License: The Code Project Open License (CPOL)

Detecting a mobile browser in ASP.NET

By Vincent Van Zyl

How to detect a mobile device accessing your ASP.NET website.
C# (C# 2.0, C# 3.0), .NET (.NET 1.1, .NET 2.0, .NET 3.0, .NET 3.5), ASP.NET, Dev
Version:2 (See All)
Posted:24 Mar 2009
Views:8,407
Bookmarked:43 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
8 votes for this article.
Popularity: 3.61 Rating: 4.00 out of 5

1

2
1 vote, 12.5%
3
4 votes, 50.0%
4
3 votes, 37.5%
5

Introduction

A simple function to detect if a user vesting your site is on a mobile device or not.

Background

This is my first CodeProject article. The articles on this site have helped me out so much in learning .NET. I just hope this can help someone out as well.

I needed the ability to detect if a user was browsing from a mobile device or a normal web browser and redirect to the appropriate version of my site. I found very little ASP.NET tutorials that worked. So I decided to take a few different methods and language options I found on the net and put them into one simple ASP.NET method.

Using the Code

It is just a static boolean method that gets called, isMobileBrowser():

public static bool isMobileBrowser()
{
    //GETS THE CURRENT USER CONTEXT
    HttpContext context = HttpContext.Current;

    //FIRST TRY BUILT IN ASP.NT CHECK
    if (context.Request.Browser.IsMobileDevice)
    {
        return true;
    }
    //THEN TRY CHECKING FOR THE HTTP_X_WAP_PROFILE HEADER
    if (context.Request.ServerVariables["HTTP_X_WAP_PROFILE"] != null)
    {
        return true;
    }
    //THEN TRY CHECKING THAT HTTP_ACCEPT EXISTS AND CONTAINS WAP
    if (context.Request.ServerVariables["HTTP_ACCEPT"] != null && 
        context.Request.ServerVariables["HTTP_ACCEPT"].ToLower().Contains("wap"))
    {
        return true;
    }
    //AND FINALLY CHECK THE HTTP_USER_AGENT 
    //HEADER VARIABLE FOR ANY ONE OF THE FOLLOWING
    if (context.Request.ServerVariables["HTTP_USER_AGENT"] != null)
    {
        //Create a list of all mobile types
        string[] mobiles =
            new[]
                {
                    "midp", "j2me", "avant", "docomo", 
                    "novarra", "palmos", "palmsource", 
                    "240x320", "opwv", "chtml",
                    "pda", "windows ce", "mmp/", 
                    "blackberry", "mib/", "symbian", 
                    "wireless", "nokia", "hand", "mobi",
                    "phone", "cdm", "up.b", "audio", 
                    "SIE-", "SEC-", "samsung", "HTC", 
                    "mot-", "mitsu", "sagem", "sony"
                    , "alcatel", "lg", "eric", "vx", 
                    "NEC", "philips", "mmm", "xx", 
                    "panasonic", "sharp", "wap", "sch",
                    "rover", "pocket", "benq", "java", 
                    "pt", "pg", "vox", "amoi", 
                    "bird", "compal", "kg", "voda",
                    "sany", "kdd", "dbt", "sendo", 
                    "sgh", "gradi", "jb", "dddi", 
                    "moto", "iphone"
                };

        //Loop through each item in the list created above 
        //and check if the header contains that text
        foreach (string s in mobiles)
        {
            if (context.Request.ServerVariables["HTTP_USER_AGENT"].
                                                ToLower().Contains(s.ToLower()))
            {
                return true;
            }
        }
    }

    return false;
}

Points of Interest

As you can see, the above code is written in new syntax. But, it can easily be changed to work on any version of .NET. Instead of using the short hand array initializer, use new string[] {} (instead of new[] {}).

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Vincent Van Zyl


Member
I am fairly new to programming as I began programming in asp.net and C# in 2005.

But I have learned a lot in a very short space of time thanks to code project and sitepoint. I work in a very fast past company which also helped speed things up
Occupation: Team Leader
Company: Blueworld Communities
Location: South Africa South Africa

Other popular ASP.NET articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 8 of 8 (Total in Forum: 8) (Refresh)FirstPrevNext
Generalsome little enhancements Pinmembersmartcatxxx8:02 11 Oct '09  
GeneralDetect Mobile Infomation PinmemberAmimpat2:12 31 Jul '09  
GeneralRe: Detect Mobile Infomation [modified] PinmemberDutchMafia4:44 13 Aug '09  
GeneralThis code contains false positives! PinmemberEricLaw9:28 14 Jul '09  
GeneralBug Pinmemberthezone12323:44 7 Apr '09  
GeneralRe: Bug Pinmembermgbaldwin2:42 13 Jul '09  
Generalthanks, Pinmemberjusjusjus23:26 30 Mar '09  
GeneralThanks Pinmemberthund3rstruck8:09 24 Mar '09  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 24 Mar 2009
Editor: Smitha Vijayan
Copyright 2009 by Vincent Van Zyl
Everything else Copyright © CodeProject, 1999-2009
Web22 | Advertise on the Code Project