/// <inheritdoc/>
        public bool IsInternetConnected()
        {
            ConnectivityManager connectivity = GetConnectivityManager();

            // With Build.VERSION.SdkInt < BuildVersionCodes.M we would have to use an alternative
            // way to check, but Android 6 is our min version.
            NetworkCapabilities capabilities = connectivity.GetNetworkCapabilities(connectivity.ActiveNetwork);

            return((capabilities != null) && capabilities.HasCapability(NetCapability.Internet));
        }
        public override NetworkCostType GetNetworkCostType()
        {
            try
            {
                ConnectivityManager connMgr = (ConnectivityManager)NativeApplication.Current.ApplicationContext.GetSystemService(Context.ConnectivityService);

                if (connMgr != null)
                {
                    if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
                    {
                        Network network = connMgr.ActiveNetwork;
                        if (network != null)
                        {
                            NetworkCapabilities capabilities = connMgr.GetNetworkCapabilities(network);

                            if (capabilities.HasTransport(TransportType.Wifi))
                            {
                                return(NetworkCostType.Unlimited);
                            }
                            else
                            {
                                return(NetworkCostType.Limited);
                            }
                        }
                    }

                    else
                    {
                        NetworkInfo activeInfo = connMgr.ActiveNetworkInfo;
                        if (activeInfo != null && activeInfo.IsConnected)
                        {
                            if (activeInfo.Type == ConnectivityType.Wifi)
                            {
                                return(NetworkCostType.Unlimited);
                            }
                            else
                            {
                                return(NetworkCostType.Limited);
                            }
                        }
                    }
                }
            }

            catch (Exception ex)
            {
                TelemetryExtension.Current?.TrackException(ex);
            }

            return(NetworkCostType.Disconnected);
        }
        /// <inheritdoc/>
        public bool IsInternetConnected()
        {
            ConnectivityManager connectivity = GetConnectivityManager();

            if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
            {
                NetworkCapabilities capabilities = connectivity.GetNetworkCapabilities(connectivity.ActiveNetwork);
                return((capabilities != null) && capabilities.HasCapability(NetCapability.Internet));
            }

            NetworkInfo info = connectivity.ActiveNetworkInfo;

            return((info != null) && (info.IsConnected));
        }
Exemple #4
0
        public bool IsRoaming()
        {
            ConnectivityManager connectivity = ConnectivityManager.FromContext(Application.Context);

            if (connectivity?.ActiveNetwork != null)
            {
                var capabilities = connectivity.GetNetworkCapabilities(connectivity.ActiveNetwork);
                if (capabilities != null)
                {
                    return(!capabilities.HasCapability(NetCapability.NotRoaming));
                }
            }

            return(false);
        }
Exemple #5
0
        public static NetworkDetection DetectNetwork(Context context)
        {
            NetworkDetection    networkDetection    = new NetworkDetection();
            ConnectivityManager connectivityManager = (ConnectivityManager)context.GetSystemService(Context.ConnectivityService);

            var networkCapabilities = connectivityManager.GetNetworkCapabilities(connectivityManager.ActiveNetwork);

            if (networkCapabilities.HasCapability(NetCapability.Internet))
            {
                networkDetection.isOnline = true;

                if (networkCapabilities.HasTransport(TransportType.Wifi))
                {
                    networkDetection.isWifi = true;
                }
                if (networkCapabilities.HasTransport(TransportType.Cellular))
                {
                    networkDetection.isMobile = true;
                }
            }

            return(networkDetection);
        }
Exemple #6
0
        public static bool GetIsConnected(ConnectivityManager manager)
        {
            try
            {
                //When on API 21+ need to use getAllNetworks, else fall base to GetAllNetworkInfo
                //https://developer.android.com/reference/android/net/ConnectivityManager.html#getAllNetworks()
                if ((int)Android.OS.Build.VERSION.SdkInt >= 21)
                {
                    foreach (var network in manager.GetAllNetworks())
                    {
                        try
                        {
                            var capabilities = manager.GetNetworkCapabilities(network);

                            if (capabilities == null)
                            {
                                continue;
                            }

                            //check to see if it has the internet capability
                            if (!capabilities.HasCapability(NetCapability.Internet))
                            {
                                continue;
                            }

                            //if on 23+ then we can also check validated
                            //Indicates that connectivity on this network was successfully validated.
                            //this means that you can be connected to wifi and has internet
                            if ((int)Android.OS.Build.VERSION.SdkInt >= 23 && !capabilities.HasCapability(NetCapability.Validated))
                            {
                                continue;
                            }

                            var info = manager.GetNetworkInfo(network);

                            if (info == null || !info.IsAvailable)
                            {
                                continue;
                            }

                            if (info.IsConnected)
                            {
                                return(true);
                            }
                        }
                        catch
                        {
                            //there is a possibility, but don't worry
                        }
                    }
                }
                else
                {
#pragma warning disable CS0618 // Type or member is obsolete
                    foreach (var info in manager.GetAllNetworkInfo())
#pragma warning restore CS0618 // Type or member is obsolete
                    {
                        if (info == null || !info.IsAvailable)
                        {
                            continue;
                        }

                        if (info.IsConnected)
                        {
                            return(true);
                        }
                    }
                }

                return(false);
            }
            catch (Exception e)
            {
                Debug.WriteLine("Unable to get connected state - do you have ACCESS_NETWORK_STATE permission? - error: {0}", e);
                return(false);
            }
        }
        internal bool GetIsConnected(ConnectivityManager manager)
        {
            try
            {
                //When on API 21+ need to use getAllNetworks, else fall base to GetAllNetworkInfo
                //https://developer.android.com/reference/android/net/ConnectivityManager.html#getAllNetworks()
                if ((int)global::Android.OS.Build.VERSION.SdkInt >= 21)
                {
                    foreach (var network in manager.GetAllNetworks())
                    {
                        try
                        {
                            var capabilities = manager.GetNetworkCapabilities(network);

                            if (capabilities == null)
                            {
                                continue;
                            }

                            //check to see if it has the internet capability
                            if (!capabilities.HasCapability(NetCapability.Internet))
                            {
                                continue;
                            }

                            var info = manager.GetNetworkInfo(network);

                            if (info == null || !info.IsAvailable)
                            {
                                continue;
                            }

                            if (info.IsConnected)
                            {
                                return(true);
                            }
                        }
                        catch
                        {
                            //there is a possibility, but don't worry
                        }
                    }
                }
                else
                {
#pragma warning disable CS0618 // Type or member is obsolete
                    foreach (var info in manager.GetAllNetworkInfo())
#pragma warning restore CS0618 // Type or member is obsolete
                    {
                        if (info == null || !info.IsAvailable)
                        {
                            continue;
                        }

                        if (info.IsConnected)
                        {
                            return(true);
                        }
                    }
                }

                return(false);
            }
            catch (Exception e)
            {
                Logger.Warn("Unable to get connected state - do you have ACCESS_NETWORK_STATE permission? - error: {0}", e);
                return(false);
            }
        }