WP8 – IsOnline – Prüfen der Internet Connection

Hallo Leute,

nachstehend ein einfaches Code-Snippet, wie man auf einem WP8-Device prüfen kann, ob das Gerät online oder offline ist.

public static bool IsOnline()
        {
            return (Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType != Microsoft.Phone.Net.NetworkInformation.NetworkInterfaceType.None);
        }

In meiner App, prüfe ich zudem, ob ein Webservice erreichbar ist und zeige den Status über den Systray an:

/// <summary>
        /// Determines whether [is address available] [the specified callback action].
        /// </summary>
        /// <param name="callbackAction">The callback action.</param>
        public void IsOnline(Action<bool> callbackAction)
        {
            try
            {
                if (!utils.Connection.IsOnline())
                    if (callbackAction != null)
                        callbackAction(false);

                var login = new Benutzer() { Name = "login", Password = "login" };
                Helper.JsonHelper.DoRestGetOperation(login, "benutzer/UAP", response =>
                {
                    if (response.StatusCode == HttpStatusCode.BadGateway ||
                        response.StatusCode == HttpStatusCode.BadRequest ||
                        response.StatusCode == HttpStatusCode.Conflict ||
                        response.StatusCode == HttpStatusCode.ExpectationFailed ||
                        response.StatusCode == HttpStatusCode.Forbidden ||
                        response.StatusCode == HttpStatusCode.GatewayTimeout ||
                        response.StatusCode == HttpStatusCode.HttpVersionNotSupported ||
                        response.StatusCode == HttpStatusCode.LengthRequired ||
                        response.StatusCode == HttpStatusCode.NotFound ||
                        response.StatusCode == HttpStatusCode.ProxyAuthenticationRequired ||
                        response.StatusCode == HttpStatusCode.RequestTimeout ||
                        response.StatusCode == HttpStatusCode.RequestUriTooLong ||
                        response.StatusCode == HttpStatusCode.ServiceUnavailable)
                    {
                        if (callbackAction != null)
                        {
                            callbackAction(false);
                            return;
                        }

                    }
                    if (callbackAction != null)
                        callbackAction(true);

                });

            }
            catch
            {
                if (callbackAction != null)
                    callbackAction(false);
            }
        }

Im OnNavigatedTo einer App-Page rufe ich die Methode dann wie folgt auf:

App.BoContext.IsOnline(b =>
            {
                try
                {
                    if (b)
                    {
                        ShowProgressIndicatorAndHideInSeconds("Online", 2, Colors.Green);
                        lineConnectionState.Background = new SolidColorBrush(Colors.Green);
                    }
                    else
                    {
                        ShowProgressIndicatorAndHideInSeconds("Offline", 2, Colors.Red);
                        lineConnectionState.Background = new SolidColorBrush(Colors.Red);
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            });

Kurze Anmerkung: lineConnectionState ist ein Grid-Control mit 2px Höhe, welchem ich einfach die Background-Farbe ändere.

Cheers,
Christian

Leave a reply