Checking WiFi Connection Status in Windows Phone 8

This article explains how to check the WiFi connectivity status.

Introduction

In this article I'll explain the simplest way to check the WiFi  status in Windows Phone. This is a very necessary and required feature for all the apps that use an internet connection. For example if you you want to request something from the internet or send something to a server that may require an active WiFi connection then you need to be ensure WiFi is available to avoid errors. So let's start.

Device Network Information

This class contains network information for a specific Windows Phone device. Using this class we can check various device network parameters like it's availability, roaming, network change, WiFi status and so on. To use this class you need to include the namespace "Microsoft.Phone.Net.NetworkInformation".

Is WiFi Available

This property contains the status of WiFi. If the device is on then it will return true else it'll return false.

IsCellularDataEnabled

This property contains the status of cellular data availability. If a data connection is available then it will return true else it'll return false.

Demo

To run this project create a new project and add the following code to an XAML file.

XAML

<phone:PhoneApplicationPage

    x:Class="Demo.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"

    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d"

    FontFamily="{StaticResource PhoneFontFamilyNormal}"

    FontSize="{StaticResource PhoneFontSizeNormal}"

    Foreground="{StaticResource PhoneForegroundBrush}"

    SupportedOrientations="Portrait" Orientation="Portrait"

    shell:SystemTray.IsVisible="True">

 

    <!--LayoutRoot is the root grid where all page content is placed-->

    <Grid x:Name="LayoutRoot" Background="Transparent">

        <Grid.RowDefinitions>

            <RowDefinition Height="Auto"/>

            <RowDefinition Height="*"/>

        </Grid.RowDefinitions>

 

        <!--TitlePanel contains the name of the application and page title-->

        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">

            <TextBlock Text="Demo" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>

            <TextBlock Text="WiFi Demo" Margin="9,-7,0,0" FontSize="40"/>

        </StackPanel>

 

        <!--ContentPanel - place additional content here-->

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

            <TextBlock Text="Network Status" Name="nwSts" TextAlignment="Center" Margin="0,128,0,476"></TextBlock>

            <Button Name="startBtn" Click="startBtn_Click" Content="Check WiFi" HorizontalAlignment="Left" Margin="0,0,0,268" Width="446" Height="72" VerticalAlignment="Bottom"/>

        </Grid>

    </Grid>

</phone:PhoneApplicationPage>

C# Code Behind

using Microsoft.Phone.Controls;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using Windows.Phone.Speech.Synthesis;

using Windows.Devices.Sensors;

using System.Diagnostics;

using Microsoft.Phone.Net.NetworkInformation;

 

namespace Demo

{

    public partial class MainPage : PhoneApplicationPage

    {

        // Constructor

        public MainPage()

        {

            InitializeComponent();

        }

        private void startBtn_Click(object sender, RoutedEventArgs e)

        {

            if (DeviceNetworkInformation.IsWiFiEnabled)

            {

                if (!DeviceNetworkInformation.IsCellularDataEnabled && DeviceNetworkInformation.IsNetworkAvailable)

                {

                    nwSts.Text = "WiFi Status: On and Connected!";

                }

                else

                {

                    nwSts.Text = "WiFi Status: On but not connected!";

                }

            }

            else

            {

                nwSts.Text = "Wifi Status: Off";

            }

        }

    }

}

In the code above "DeviceNetworkInformation.IsNetworkAvailable" is the line that checks for network connectivity.

DeviceNetworkInformation.IsCellularDataEnabled checks for cellular data connection.

DeviceNetworkInformation.IsWiFiEnabled checks the WiFi status.

Output