How to check internet connectivity type in Universal Windows Platform
Solution 1
1. Check Internet Connection Availability
To check whether any network connection is established or not use GetIsNetworkAvailable
method of NetworkInterface
class.
bool isNetworkConnected = NetworkInterface.GetIsNetworkAvailable();
GetIsNetworkAvailable() -
Summary: Indicates whether any network connection is available.
Returns:true
if a network connection is available; otherwise,false
.
2. Check Internet Connection Availability via WWLN (WiFi)
To check whether internet connected via WWAN use IsWlanConnectionProfile
property of ConnectionProfile
class
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWlanConnectionProfile;
IsWlanConnectionProfile
Summary: Gets a value that indicates if connection profile is a WLAN (WiFi) connection. This determines whether or not WlanConnectionProfileDetails is null.
Returns: Indicates if the connection profile represents a WLAN (WiFi) connection.
3. Check Internet Connection Availability via WWAN (Mobile)
To check whether internet connected via WWAN use IsWwanConnectionProfile
property ofConnectionProfile
class
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWwanConnectionProfile;
IsWwanConnectionProfile
Summary: Gets a value that indicates if connection profile is a WWAN (mobile) connection. This determines whether or not WwanConnectionProfileDetails is null.
Returns: Indicates if the connection profile represents a WWAN (mobile) connection.
Reference
Hippiehunter Answer
4. Check Metered network
To check whether Internet reachable via a metered connection or not, use GetConnectionCost
method on NetworkInterface
class.
var connectionCost = NetworkInformation.GetInternetConnectionProfile().GetConnectionCost();
if (connectionCost.NetworkCostType == NetworkCostType.Unknown
|| connectionCost.NetworkCostType == NetworkCostType.Unrestricted)
{
//Connection cost is unknown/unrestricted
}
else
{
//Metered Network
}
Reference (More detailed answer here)
1. How to manage metered network cost constraints - MSDN
2. NetworkCostType Enum - MSDN
5. Manage network availability changes
To sense the significant network availability changes, use eventNetworkStatusChanged
of NetworkInformation
class
// register for network status change notifications
networkStatusCallback = new NetworkStatusChangedEventHandler(OnNetworkStatusChange);
if (!registeredNetworkStatusNotif)
{
NetworkInformation.NetworkStatusChanged += networkStatusCallback;
registeredNetworkStatusNotif = true;
}
async void OnNetworkStatusChange(object sender)
{
// get the ConnectionProfile that is currently used to connect to the Internet
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
if (InternetConnectionProfile == null)
{
await _cd.RunAsync(CoreDispatcherPriority.Normal, () =>
{
rootPage.NotifyUser("Not connected to Internet\n", NotifyType.StatusMessage);
});
}
else
{
connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile);
await _cd.RunAsync(CoreDispatcherPriority.Normal, () =>
{
rootPage.NotifyUser(connectionProfileInfo, NotifyType.StatusMessage);
});
}
internetProfileInfo = "";
}
References
Check Internet Connectivity - developerinsider.co
How to manage network connection events and changes in availability - MSDN
How to retrieve network connection information- MSDN
Hope it helpful to someone.
Solution 2
I use NetworkInformation.GetInternetConnectionProfile().IsWlanConnectionProfile
and IsWwanConnectionProfile
. If neither is true
, it should mean you're on Ethernet or something like that.
Keep in mind thatGetInternetConnectionProfile()
can return null and can falsely return that there is an active internet connection when the connection is active but DHCP has failed.
Solution 3
To find if the user has any network connection whatsoever (including one without internet) I use
public bool ConnectedToNetwork()
{
return NetworkInformation.GetInternetConnectionProfile()?.NetworkAdapter != null;
}
Vineet Choudhary
I love building applications for mobile and desktop. There is a great sense of achievement creating genuinely useful applications for people. I am always interested in learning new and better ways of doing things. Open content and the free exchange of information is something I am interested in. I think the world would be a significantly better place if only we all spent a little more time learning about it.
Updated on June 16, 2022Comments
-
Vineet Choudhary almost 2 years
I would like to check internet connectivity type in Windows Universal Application.
- Not Connected
- Connected via WLAN(WiFi)
- Connected via WWAN(Cellular Data)
- Connected to a metered network
in order to provide an option for downloading large size content. And also sense the significant network availability changes.
Currently, I'm only able to check whether internet connected or not using
GetIsNetworkAvailable
method ofNetworkInterface
class.NetworkInterface.GetIsNetworkAvailable();
-
ShaneOss about 3 yearsI rate using this method over Network.GetIsNetworkAvailable() because it's way less CPU intensive. Especially if your using within a loop.