From fe65f68b4d7843731c5b8a52876bd52f729fde03 Mon Sep 17 00:00:00 2001 From: kunfei Date: Sat, 7 May 2022 20:57:11 +0800 Subject: [PATCH] =?UTF-8?q?web=E6=9C=8D=E5=8A=A1=E7=9B=91=E6=B5=8B?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E5=8F=98=E5=8C=96,=E5=8F=8A=E6=97=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0IP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/receiver/NetworkChangedListener.kt | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/io/legado/app/receiver/NetworkChangedListener.kt b/app/src/main/java/io/legado/app/receiver/NetworkChangedListener.kt index f27ef455c..12de57e90 100644 --- a/app/src/main/java/io/legado/app/receiver/NetworkChangedListener.kt +++ b/app/src/main/java/io/legado/app/receiver/NetworkChangedListener.kt @@ -23,15 +23,22 @@ class NetworkChangedListener(private val context: Context) { return@lazy null } + private val networkCallback: ConnectivityManager.NetworkCallback? by lazy { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + return@lazy object : ConnectivityManager.NetworkCallback() { + override fun onAvailable(network: Network) { + onNetworkChanged?.invoke() + } + } + } + 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() - } - } - ) + networkCallback?.let { + connectivityManager.registerDefaultNetworkCallback(it) + } } else { receiver?.let { context.registerReceiver(it, it.filter) @@ -40,8 +47,14 @@ class NetworkChangedListener(private val context: Context) { } fun unRegister() { - receiver?.let { - context.unregisterReceiver(it) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + networkCallback?.let { + connectivityManager.unregisterNetworkCallback(it) + } + } else { + receiver?.let { + context.unregisterReceiver(it) + } } }