Проверьте интернет на телефоне

Я хотел проверить, может ли мой телефон подключиться к Интернету или нет. Я уже видел несколько вопросов. Одним из них является вопрос. Это говорит, чтобы использовать 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;
    }
}
Другие вопросы по тегам