updated the NetworkChecker.kt
This commit is contained in:
@@ -5,7 +5,6 @@ import android.net.ConnectivityManager
|
|||||||
import android.net.Network
|
import android.net.Network
|
||||||
import android.net.NetworkCapabilities
|
import android.net.NetworkCapabilities
|
||||||
import android.net.NetworkRequest
|
import android.net.NetworkRequest
|
||||||
import android.os.Build
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
@@ -43,8 +42,7 @@ class NetworkMonitor @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onCapabilitiesChanged(
|
override fun onCapabilitiesChanged(
|
||||||
network: Network,
|
network: Network, networkCapabilities: NetworkCapabilities
|
||||||
networkCapabilities: NetworkCapabilities
|
|
||||||
) {
|
) {
|
||||||
// Recheck connectivity when capabilities change (e.g., network becomes validated)
|
// Recheck connectivity when capabilities change (e.g., network becomes validated)
|
||||||
performPingCheck()
|
performPingCheck()
|
||||||
@@ -53,14 +51,9 @@ class NetworkMonitor @Inject constructor(
|
|||||||
|
|
||||||
fun startMonitoring() {
|
fun startMonitoring() {
|
||||||
// Check initial connectivity status
|
// Check initial connectivity status
|
||||||
val isInitiallyConnected = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
val network = connectivityManager.activeNetwork
|
||||||
val network = connectivityManager.activeNetwork
|
val capabilities = connectivityManager.getNetworkCapabilities(network)
|
||||||
val capabilities = connectivityManager.getNetworkCapabilities(network)
|
val isInitiallyConnected = capabilities?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) == true
|
||||||
capabilities?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) == true
|
|
||||||
} else {
|
|
||||||
val activeNetworkInfo = connectivityManager.activeNetworkInfo
|
|
||||||
activeNetworkInfo?.isConnected == true
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isInitiallyConnected) {
|
if (isInitiallyConnected) {
|
||||||
performPingCheck()
|
performPingCheck()
|
||||||
@@ -68,14 +61,14 @@ class NetworkMonitor @Inject constructor(
|
|||||||
_isConnected.postValue(false)
|
_isConnected.postValue(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
val networkRequest = NetworkRequest.Builder()
|
val networkRequest =
|
||||||
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
connectivityManager.registerNetworkCallback(networkRequest, networkCallback)
|
connectivityManager.registerNetworkCallback(networkRequest, networkCallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun stopMonitoring() {
|
fun stopMonitoring() { // never needed to call
|
||||||
try {
|
try {
|
||||||
connectivityManager.unregisterNetworkCallback(networkCallback)
|
connectivityManager.unregisterNetworkCallback(networkCallback)
|
||||||
} catch (_: IllegalArgumentException) {
|
} catch (_: IllegalArgumentException) {
|
||||||
|
|||||||
Reference in New Issue
Block a user