Network Information on Windows Phone

For one of my projects I needed to retrieve the exact connection type used on the device. I needed to know exactly, if the user was using a 3G or 2G cellular connection.

So, after a quick search I found the following link: Microsoft.Phone.Net.NetworkInformation Namespace.

I guess most of you have used the DeviceNetworkInformation class and especially its NetworkAvailabilityChanged Event, which tells us when a connection has been established or lost. Also, this class allows you to determine if Celular and WiFi data are enabled.

However, I needed more information than this class can provide. Among the listed classes on MSDN, I noticed the NetworkInterfaceList Class.

Screenshot1

This class contains an enumerable collection of all currently available network connections on your device.
Plus it provides the following properties for the connection:

InterfaceName Gets the name of the network interface.
Description Gets a description of the network interface.
InterfaceType Gets the type of the network interface.
InterfaceSubtype Gets additional information about the type of the network interface.
InterfaceState Gets the connection state of the network interface.
Bandwidth Gets the speed of the network interface.
Characteristics Gets the characteristics of the network interface.

So, you we simply iterate the collection that we get when using NetworkInterfaceList:

var allNetworks = (new NetworkInterfaceList()).ToList();
for (var i =0; i < allNetworks.Count; i++)
{
    var network = allNetworks.ElementAt(i);
    ...
}

So, now you can easily write a check for specific network types or bandwidth.

Hope this tip will be useful.

If you have any comments or suggestions, feel free to leave them in the comments below.