/// <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)); }
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); }
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); }
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); } }