Проверьте интернет на телефоне
Я хотел проверить, может ли мой телефон подключиться к Интернету или нет. Я уже видел несколько вопросов. Одним из них является вопрос. Это говорит, чтобы использовать NetworkInterface.GetIsNetworkAvailable()
это и я попробовал. Я отключил компьютер от интернета и также выключил DataConnection
эмулятора но NetworkInterface.GetIsNetworkAvailable()
это всегда возвращалось правда. Но одновременно я также проверяю NetworkInterfaceType.None
и что интересно, он обнуляется. Кто-нибудь может объяснить, где мне не хватает информации?
Попытка: -
public static void CheckNetworkAvailability()
{
// this is coming true even when i disconnected my pc from internet.
// i also make the dataconnection off of the emulator
var fg = NetworkInterface.GetIsNetworkAvailable();
var ni = NetworkInterface.NetworkInterfaceType;
// this part is coming none
if (ni == NetworkInterfaceType.None)
IsConnected = false;
}
любая помощь приветствуется:)
3 ответа
Эмулятор всегда возвращает NetworkInterface.GetIsNetworkAvailable()
как истина, даже если вы эмулируете условия сети как отсутствие сети.
Я сам столкнулся с этой проблемой, и единственный истинный способ проверить это поведение - развернуть приложение на физическом устройстве под управлением Windows Phone и протестировать его с отключенными данными.
Я использую следующий код, чтобы проверить, имеет ли устройство доступ к Интернету, если оно подключено к Wi-Fi или для передачи данных.
public void UpdateNetworkInformation()
{
// Get current Internet Connection Profile.
ConnectionProfile internetConnectionProfile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile();
//air plan mode is on...
if (internetConnectionProfile == null)
{
Is_Connected = false;
return;
}
//if true, internet is accessible.
this.Is_InternetAvailable = internetConnectionProfile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;
// Check the connection details.
else if (internetConnectionProfile.NetworkAdapter.IanaInterfaceType != 71)// Connection is not a Wi-Fi connection.
{
Is_Roaming = internetConnectionProfile.GetConnectionCost().Roaming;
/// user is Low on Data package only send low data.
Is_LowOnData = internetConnectionProfile.GetConnectionCost().ApproachingDataLimit;
//User is over limit do not send data
Is_OverDataLimit = internetConnectionProfile.GetConnectionCost().OverDataLimit;
}
else //Connection is a Wi-Fi connection. Data restrictions are not necessary.
{
Is_Wifi_Connected = true;
}
}
Изменить: И для простого подключения к Интернету вы можете использовать код ниже.
System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
Надеюсь это поможет!
NetworkInterface.GetIsNetworkAvailable()
проверяет network connection
а не internet connection
, Если вы находитесь в любой сети, она вернется true
будь то internet
присутствует или нет.
Вы можете проверить интернет-соединение следующим образом:
using System.Net
private bool IsOnline()
{
try
{
IPHostEntry iPHostEntry = Dns.GetHostEntry("www.wikipedia.com");
return true;
}
catch (SocketException ex)
{
return false;
}
}