Magisk/app/src/main/java/com/topjohnwu/magisk/core/utils/net/NetworkObserver.kt

30 lines
953 B
Kotlin
Raw Normal View History

2020-09-28 06:21:38 +02:00
package com.topjohnwu.magisk.core.utils.net
2020-07-11 07:54:25 +02:00
import android.content.Context
import android.net.ConnectivityManager
import android.os.Build
import androidx.core.content.getSystemService
2020-09-28 06:21:38 +02:00
typealias ConnectionCallback = (Boolean) -> Unit
2020-07-11 07:54:25 +02:00
2020-09-28 06:21:38 +02:00
abstract class NetworkObserver(
2020-07-11 07:54:25 +02:00
context: Context,
2020-09-28 06:21:38 +02:00
protected val callback: ConnectionCallback
2020-07-11 07:54:25 +02:00
) {
2020-09-28 06:21:38 +02:00
protected val app: Context = context.applicationContext
2020-07-11 07:54:25 +02:00
protected val manager = context.getSystemService<ConnectivityManager>()!!
protected abstract fun stopObserving()
2020-09-28 06:21:38 +02:00
protected abstract fun getCurrentState()
2020-07-11 07:54:25 +02:00
companion object {
2020-09-28 06:21:38 +02:00
fun observe(context: Context, callback: ConnectionCallback): NetworkObserver {
2021-04-21 18:41:42 +02:00
val observer: NetworkObserver = if (Build.VERSION.SDK_INT >= 23)
MarshmallowNetworkObserver(context, callback)
else LollipopNetworkObserver(context, callback)
return observer.apply { getCurrentState() }
2020-07-11 07:54:25 +02:00
}
}
}