From e22825d818edb9cdc71561e156546ccaf9088c9d Mon Sep 17 00:00:00 2001 From: FourTOne5 <59261191+FourTOne5@users.noreply.github.com> Date: Sun, 3 Oct 2021 21:27:56 +0600 Subject: [PATCH] Check if wifi is connected rather than enabled while downloading. (#5967) * Fixxy Wixxy * Downgrade check from Android S to Android Q --- .../data/download/DownloadService.kt | 4 ++-- .../util/system/ContextExtensions.kt | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadService.kt index 2e39dfae62..952b792f74 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadService.kt @@ -15,11 +15,11 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.util.lang.plusAssign import eu.kanade.tachiyomi.util.lang.withUIContext import eu.kanade.tachiyomi.util.system.acquireWakeLock +import eu.kanade.tachiyomi.util.system.isConnectedToWifi import eu.kanade.tachiyomi.util.system.isOnline import eu.kanade.tachiyomi.util.system.isServiceRunning import eu.kanade.tachiyomi.util.system.notification import eu.kanade.tachiyomi.util.system.toast -import eu.kanade.tachiyomi.util.system.wifiManager import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob @@ -154,7 +154,7 @@ class DownloadService : Service() { */ private fun onNetworkStateChanged() { if (isOnline()) { - if (preferences.downloadOnlyOverWifi() && !wifiManager.isWifiEnabled) { + if (preferences.downloadOnlyOverWifi() && !isConnectedToWifi()) { stopDownloads(R.string.download_notifier_text_only_wifi) } else { val started = downloadManager.startDownloads() diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt index 65e7589b5e..05aedd1ecb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt @@ -17,6 +17,7 @@ import android.graphics.Color import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.net.Uri +import android.net.wifi.WifiInfo import android.net.wifi.WifiManager import android.os.Build import android.os.PowerManager @@ -379,6 +380,24 @@ fun Context.isOnline(): Boolean { return (NetworkCapabilities.TRANSPORT_CELLULAR..maxTransport).any(networkCapabilities::hasTransport) } +/** + * Returns true if device is connected to wifi. + */ +fun Context.isConnectedToWifi(): Boolean { + if (!wifiManager.isWifiEnabled) return false + + val wifiInfo: WifiInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + val activeNetwork = connectivityManager.activeNetwork ?: return false + val networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork) ?: return false + networkCapabilities.transportInfo as WifiInfo + } else { + @Suppress("DEPRECATION") + wifiManager.connectionInfo + } + + return wifiInfo.bssid != null +} + /** * Gets document size of provided [Uri] *