Skip to content

Instantly share code, notes, and snippets.

@matinnasiri01
Last active September 19, 2023 11:05
Show Gist options
  • Save matinnasiri01/1cebe5d5666291df23016697f9846a2c to your computer and use it in GitHub Desktop.
Save matinnasiri01/1cebe5d5666291df23016697f9846a2c to your computer and use it in GitHub Desktop.
This Kotlin file helps you to find out about your user's connection to the Internet very easily
class NetworkChecker(private val context: Context) {
val isInternetConnected :Boolean
get() {
var result = false
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val networkCapabilities = connectivityManager.activeNetwork ?: return false
val myNetwork = connectivityManager.getNetworkCapabilities( networkCapabilities ) ?: return false
result = when {
myNetwork.hasTransport( NetworkCapabilities.TRANSPORT_WIFI ) -> true
myNetwork.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
myNetwork.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
else -> false
}
}
else {
result = when (connectivityManager.activeNetworkInfo?.type) {
ConnectivityManager.TYPE_WIFI -> true
ConnectivityManager.TYPE_MOBILE -> true
ConnectivityManager.TYPE_ETHERNET -> true
else -> false
}
}
return result
}
val isWifiConnected :Boolean
get() {
var result = false
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val networkCapabilities = connectivityManager.activeNetwork ?: return false
val myNetwork = connectivityManager.getNetworkCapabilities( networkCapabilities ) ?: return false
result = when {
myNetwork.hasTransport( NetworkCapabilities.TRANSPORT_WIFI ) -> true
myNetwork.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> false
myNetwork.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> false
else -> false
}
}
else {
result = when (connectivityManager.activeNetworkInfo?.type) {
ConnectivityManager.TYPE_WIFI -> true
ConnectivityManager.TYPE_MOBILE -> false
ConnectivityManager.TYPE_ETHERNET -> false
else -> false
}
}
return result
}
val isMobileDataConnected :Boolean
get() {
var result = false
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val networkCapabilities = connectivityManager.activeNetwork ?: return false
val myNetwork = connectivityManager.getNetworkCapabilities( networkCapabilities ) ?: return false
result = when {
myNetwork.hasTransport( NetworkCapabilities.TRANSPORT_WIFI ) -> false
myNetwork.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
myNetwork.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> false
else -> false
}
}
else {
result = when (connectivityManager.activeNetworkInfo?.type) {
ConnectivityManager.TYPE_WIFI -> false
ConnectivityManager.TYPE_MOBILE -> true
ConnectivityManager.TYPE_ETHERNET -> false
else -> false
}
}
return result
}
val isEthernetConnected :Boolean
get() {
var result = false
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val networkCapabilities = connectivityManager.activeNetwork ?: return false
val myNetwork = connectivityManager.getNetworkCapabilities( networkCapabilities ) ?: return false
result = when {
myNetwork.hasTransport( NetworkCapabilities.TRANSPORT_WIFI ) -> false
myNetwork.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> false
myNetwork.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
else -> false
}
}
else {
result = when (connectivityManager.activeNetworkInfo?.type) {
ConnectivityManager.TYPE_WIFI -> false
ConnectivityManager.TYPE_MOBILE -> false
ConnectivityManager.TYPE_ETHERNET -> true
else -> false
}
}
return result
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment