I'm using connectivity manager to check if connection is available, lost, etc. This is my network repository impl
class NetworkRepositoryImpl @Inject constructor(
@ApplicationContext private val context: Context
) : NetworkRepository {
private val connectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
override val networkStatus: Flow<NetworkStatus> = callbackFlow {
val connectivityCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
trySend(NetworkStatus.Available)
}
override fun onUnavailable() {
trySend(NetworkStatus.Unavailable)
}
override fun onLosing(network: Network, maxMsToLive: Int) {
trySend(NetworkStatus.Losing)
}
override fun onLost(network: Network) {
trySend(NetworkStatus.Lost)
}
}
val request = NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.build()
connectivityManager.registerNetworkCallback(request, connectivityCallback)
awaitClose {
connectivityManager.unregisterNetworkCallback(connectivityCallback)
}
}.distinctUntilChanged()
.flowOn(Dispatchers.IO)
}
When I switch from wifi to cellular it's working. It works when only wifi is on or cellular. But that switch from cellular to wifi shows connectivity dialog for some reason