From 115867674b323ceb1826177048f5acb86cb73503 Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Sun, 17 Oct 2021 12:20:10 -0400 Subject: [PATCH] Check if wifi is connected rather than unmetered while downloading. Co-Authored-By: FourTOne5 <59261191+FourTOne5@users.noreply.github.com> --- .../tachiyomi/data/download/DownloadService.kt | 4 ++-- .../tachiyomi/util/system/ContextExtensions.kt | 18 ++++++++++++++++++ 2 files changed, 20 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 c85c64932c..f7a8ea4741 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 @@ -7,7 +7,6 @@ import android.content.Intent import android.net.ConnectivityManager import android.net.Network import android.net.NetworkCapabilities -import android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED import android.net.NetworkRequest import android.os.Build import android.os.IBinder @@ -22,6 +21,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.util.lang.plusAssign import eu.kanade.tachiyomi.util.system.connectivityManager +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.powerManager @@ -204,7 +204,7 @@ class DownloadService : Service() { downloadManager.stopDownloads(getString(R.string.no_network_connection)) return } - if (preferences.downloadOnlyOverWifi() && !networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)) { + if (preferences.downloadOnlyOverWifi() && !isConnectedToWifi()) { downloadManager.stopDownloads(getString(R.string.no_wifi_connection)) } 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 f312bf5a93..1625ec1608 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 @@ -288,6 +288,24 @@ fun Context.unregisterLocalReceiver(receiver: BroadcastReceiver) { ) } +/** + * Returns true if device is connected to Wifi. + */ +fun Context.isConnectedToWifi(): Boolean { + if (!wifiManager.isWifiEnabled) return false + + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + val activeNetwork = connectivityManager.activeNetwork ?: return false + val networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork) ?: return false + + networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) && + networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + } else { + @Suppress("DEPRECATION") + wifiManager.connectionInfo.bssid != null + } +} + /** * Returns true if the given service class is running. */