I am using this methods for check network connection but some users getting "no internet connection" error even they have connected to internet. Users reviewed with; Huawei Mate 10 Lite, LGE V20, Asus Zenfone, Samsung Galaxy A8
My methods:
private fun isConnectionOn(): Boolean {
val connectivityManager =
appContext.getSystemService(Context.CONNECTIVITY_SERVICE) as
ConnectivityManager
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
postAndroidMInternetCheck(connectivityManager)
} else {
preAndroidMInternetCheck(connectivityManager)
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun postAndroidMInternetCheck(
connectivityManager: ConnectivityManager
): Boolean {
val network = connectivityManager.activeNetwork
val connection =
connectivityManager.getNetworkCapabilities(network)
return connection != null && (
connection.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
connection.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR))
}
private fun preAndroidMInternetCheck(
connectivityManager: ConnectivityManager
): Boolean {
val activeNetwork = connectivityManager.activeNetworkInfo
if (activeNetwork != null) {
return (activeNetwork.type == ConnectivityManager.TYPE_WIFI ||
activeNetwork.type == ConnectivityManager.TYPE_MOBILE)
}
return false
}