kopia lustrzana https://github.com/ryukoposting/Signal-Android
Handle deprecated connectivity intent filter.
rodzic
de558bc87c
commit
4f167feaf5
|
@ -5,12 +5,52 @@ import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import android.net.ConnectivityManager
|
import android.net.ConnectivityManager
|
||||||
|
import android.net.Network
|
||||||
|
import android.os.Build
|
||||||
|
import androidx.annotation.RequiresApi
|
||||||
import io.reactivex.rxjava3.core.Observable
|
import io.reactivex.rxjava3.core.Observable
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
|
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
|
||||||
|
|
||||||
object InternetConnectionObserver {
|
object InternetConnectionObserver {
|
||||||
fun observe(): Observable<Boolean> = Observable.create {
|
/**
|
||||||
|
* Observe network availability changes.
|
||||||
|
*/
|
||||||
|
fun observe(): Observable<Boolean> {
|
||||||
|
return if (Build.VERSION.SDK_INT >= 24) {
|
||||||
|
observeApi24()
|
||||||
|
} else {
|
||||||
|
observeApi19()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(24)
|
||||||
|
private fun observeApi24(): Observable<Boolean> {
|
||||||
|
return Observable.create {
|
||||||
|
val application = ApplicationDependencies.getApplication()
|
||||||
|
val connectivityManager = ServiceUtil.getConnectivityManager(application)
|
||||||
|
|
||||||
|
val callback = object : ConnectivityManager.NetworkCallback() {
|
||||||
|
override fun onAvailable(network: Network) {
|
||||||
|
it.onNext(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onLost(network: Network) {
|
||||||
|
it.onNext(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
connectivityManager.registerDefaultNetworkCallback(callback)
|
||||||
|
|
||||||
|
it.setCancellable {
|
||||||
|
connectivityManager.unregisterNetworkCallback(callback)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
private fun observeApi19(): Observable<Boolean> {
|
||||||
|
return Observable.create {
|
||||||
val application = ApplicationDependencies.getApplication()
|
val application = ApplicationDependencies.getApplication()
|
||||||
|
|
||||||
val observer = object : BroadcastReceiver() {
|
val observer = object : BroadcastReceiver() {
|
||||||
|
@ -25,3 +65,4 @@ object InternetConnectionObserver {
|
||||||
application.registerReceiver(observer, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
|
application.registerReceiver(observer, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue