How to get the Windows Phone user agent string

1 minute read

On a recent project I needed to extract the windows phone user-agent string for our usage analytics, and it had to be the same user-agent as the IE requests. While this didn’t end up being as straight forward and I had hoped, the code below involves a few simple steps. First we have to insert a collapsed browser onto the page, then we can navigate it to specifically crafted HTML/JavaScript, which will in-turn notify the WebBrowser control of it’s user-agent. All you need to do is store it somewhere; in my case, I put it into a custom ApplicationSettings class, but you can store it anywhere you want.


Since this code requires adding a WebBrowser control to a page, it’s probably easier to do in code-behind as opposed to a view model.

public partial class HomeView : PhoneApplicationPage
    public HomeView()
        Loaded += HomeView_Loaded;

    private void HomeView_Loaded(object sender, RoutedEventArgs e)
            userAgent =>
                    // TODO: Store this wherever you want
                    ApplicationSettings.Current.UserAgent = userAgent;

The Helper

public static class UserAgentHelper
    private const string Html =
        @"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">

        <script language=""javascript"" type=""text/javascript"">
            function notifyUA() {
        <body onload=""notifyUA();""></body>

    public static void GetUserAgent(Panel rootElement, Action<string> callback)
        var browser = new Microsoft.Phone.Controls.WebBrowser();
        browser.IsScriptEnabled = true;
        browser.Visibility = Visibility.Collapsed;
        browser.Loaded += (sender, args) => browser.NavigateToString(Html);
        browser.ScriptNotify += (sender, args) =>
                                        string userAgent = args.Value;



Leave a Comment