Created
May 9, 2020 17:12
-
-
Save shamshadpattani/e87c3b986519c3c54a65c16536796ad8 to your computer and use it in GitHub Desktop.
Check the android device has internet connectivity or not. It ensure that it will be supported in all API levels or android versions. Using Kotlin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object NetworkUtils { | |
private val networkLiveData: MutableLiveData<Boolean> = MutableLiveData() | |
/** | |
* Returns instance of [LiveData] which can be observed for network changes. | |
*/ | |
fun getNetworkLiveData(context: Context): LiveData<Boolean> { | |
val connectivityManager = | |
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager | |
val networkCallback = object : ConnectivityManager.NetworkCallback() { | |
override fun onAvailable(network: Network?) { | |
networkLiveData.postValue(true) | |
} | |
override fun onLost(network: Network?) { | |
networkLiveData.postValue(false) | |
} | |
} | |
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { | |
connectivityManager.registerDefaultNetworkCallback(networkCallback) | |
} else { | |
val builder = NetworkRequest.Builder() | |
connectivityManager.registerNetworkCallback(builder.build(), networkCallback) | |
} | |
val activeNetwork: NetworkInfo? = connectivityManager.activeNetworkInfo | |
val isConnected: Boolean = activeNetwork?.isConnectedOrConnecting == true | |
networkLiveData.postValue(isConnected) | |
return networkLiveData | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment