我想检查Windows Universal Application中的互联网连接类型。
为了提供下载大尺寸内容的选项。并且还可以感知网络可用性的重大变化。
目前,我只能使用GetIsNetworkAvailable
类的NetworkInterface
方法检查互联网是否已连接。
NetworkInterface.GetIsNetworkAvailable();
答案 0 :(得分:44)
检查互联网是否使用GetIsNetworkAvailable
类的NetworkInterface
方法。
bool isInternetConnected = NetworkInterface.GetIsNetworkAvailable();
GetIsNetworkAvailable() -
摘要:表示是否有可用的网络连接 如果网络连接可用,则返回true
;否则,false
。
检查通过WWAN连接的互联网是否使用IsWlanConnectionProfile
类
ConnectionProfile
属性
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWlanConnectionProfile;
<强> IsWlanConnectionProfile 强>
摘要:获取一个值,该值指示连接配置文件是否为WLAN(WiFi)连接。这决定了是否 WlanConnectionProfileDetails为空 返回:指示连接配置文件是否代表WLAN(WiFi)连接。
检查通过WWAN连接的互联网是否使用IsWwanConnectionProfile
类
ConnectionProfile
属性
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWwanConnectionProfile;
<强> IsWwanConnectionProfile 强>
摘要:获取一个值,该值指示连接配置文件是否为WWAN(移动)连接。这决定了WwanConnectionProfileDetails是否为空 返回:指示连接配置文件是否代表WWAN(移动)连接。
<强>参考强>
Hippiehunter Answer
要检查互联网是否可通过计量连接访问,请在GetConnectionCost
课程上使用NetworkInterface
方法。
var connectionCost = NetworkInformation.GetInternetConnectionProfile().GetConnectionCost();
if (connectionCost.NetworkCostType == NetworkCostType.Unknown
|| connectionCost.NetworkCostType == NetworkCostType.Unrestricted)
{
//Connection cost is unknown/unrestricted
}
else
{
//Metered Network
}
参考(这里有更详细的答案)
1. https://msdn.microsoft.com/en-us/library/windows/apps/xaml/JJ835821(v=win.10).aspx
2. https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.networking.connectivity.networkcosttype.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1
要感知重要的网络可用性更改,请使用NetworkStatusChanged
类
NetworkInformation
// 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 = "";
}
<强>参考强>
https://developerinsider.co/check-internet-connectivity-in-uwp/
https://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj835820.aspx
https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh452991.aspx
希望对某人有所帮助。
答案 1 :(得分:4)
我使用NetworkInformation.GetInternetConnectionProfile().IsWlanConnectionProfile
和IsWwanConnectionProfile
。如果两者都不是true
,那么它应该意味着您使用以太网或类似的东西。
请记住,GetInternetConnectionProfile()
可以返回null,并且当连接处于活动状态但DHCP失败时,可能会错误地返回有活动的Internet连接。
答案 2 :(得分:0)
我要使用
来查找用户是否具有任何网络连接(包括没有互联网的任何连接)public bool ConnectedToNetwork()
{
return NetworkInformation.GetInternetConnectionProfile()?.NetworkAdapter != null;
}