web服务监测网络变化,及时更新IP
This commit is contained in:
1 parent
65609fe942
commit
f113df4f97
3 files changed
+68
-30
No files matched your search
@@ -0,0 +1,61 @@
|
||||
package io.legado.app.receiver
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.Network
|
||||
import android.os.Build
|
||||
import splitties.systemservices.connectivityManager
|
||||
|
||||
/**
|
||||
* 监测网络变化
|
||||
*/
|
||||
class NetworkChangedListener(private val context: Context) {
|
||||
|
||||
var onNetworkChanged: (() -> Unit)? = null
|
||||
|
||||
private val receiver: NetworkChangedReceiver? by lazy {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
|
||||
NetworkChangedReceiver()
|
||||
}
|
||||
return@lazy null
|
||||
}
|
||||
|
||||
fun register() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
connectivityManager.registerDefaultNetworkCallback(
|
||||
object : ConnectivityManager.NetworkCallback() {
|
||||
override fun onAvailable(network: Network) {
|
||||
onNetworkChanged?.invoke()
|
||||
}
|
||||
}
|
||||
)
|
||||
} else {
|
||||
receiver?.let {
|
||||
context.registerReceiver(it, it.filter)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun unRegister() {
|
||||
receiver?.let {
|
||||
context.unregisterReceiver(it)
|
||||
}
|
||||
}
|
||||
|
||||
inner class NetworkChangedReceiver : BroadcastReceiver() {
|
||||
|
||||
val filter = IntentFilter().apply {
|
||||
@Suppress("DEPRECATION")
|
||||
addAction(ConnectivityManager.CONNECTIVITY_ACTION)
|
||||
}
|
||||
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
onNetworkChanged?.invoke()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package io.legado.app.receiver
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.net.ConnectivityManager
|
||||
|
||||
/**
|
||||
* 监测网络变化
|
||||
*/
|
||||
class NetworkChangedReceiver : BroadcastReceiver() {
|
||||
|
||||
var onReceiver: ((context: Context, intent: Intent) -> Unit)? = null
|
||||
|
||||
val filter = IntentFilter().apply {
|
||||
@Suppress("DEPRECATION")
|
||||
addAction(ConnectivityManager.CONNECTIVITY_ACTION)
|
||||
}
|
||||
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
onReceiver?.invoke(context, intent)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user