Check if wifi is connected rather than unmetered while downloading.

Co-Authored-By: FourTOne5 <59261191+FourTOne5@users.noreply.github.com>
This commit is contained in:
Jays2Kings 2021-10-17 12:20:10 -04:00
parent 89908db5e0
commit 115867674b
2 changed files with 20 additions and 2 deletions

View file

@ -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()

View file

@ -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.
*/