diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt index 1d03c732ac9f6b026c4635b1d90b9a778c66d6aa..c2f9e7bd1397ed25b928c941d702d8c6d5bb99a2 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainActivity.kt @@ -2,7 +2,6 @@ package de.rki.coronawarnapp.ui.main import android.content.Intent import android.os.Bundle -import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager @@ -69,8 +68,7 @@ class MainActivity : AppCompatActivity() { super.onResume() ConnectivityHelper.registerNetworkStatusCallback(this, callbackNetwork) ConnectivityHelper.registerBluetoothStatusCallback(this, callbackBluetooth) - Log.d(TAG, "Background work is available: ${!ConnectivityHelper.isDataSaverEnabled(this)}") - settingsViewModel.updateBackgroundJobEnabled(!ConnectivityHelper.isDataSaverEnabled(this)) + settingsViewModel.updateBackgroundJobEnabled(ConnectivityHelper.isBackgroundJobEnabled(this)) scheduleWork() showDialogWithStacktraceIfPreviouslyCrashed() } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ConnectivityHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ConnectivityHelper.kt index 457de57a667cafdba40b88c47c899fa93bbaf9fe..7cd591d3bbed1b4d5810fcf9d5bbc54fd8a989b7 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ConnectivityHelper.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ConnectivityHelper.kt @@ -1,5 +1,6 @@ package de.rki.coronawarnapp.util +import android.app.ActivityManager import android.bluetooth.BluetoothAdapter import android.content.BroadcastReceiver import android.content.Context @@ -121,6 +122,20 @@ object ConnectivityHelper { } } + /** + * Checks if background jobs are enabled + * + * @param context the context + * + * @return Boolean + * + * @see isDataSaverEnabled + * @see isBackgroundRestricted + */ + fun isBackgroundJobEnabled(context: Context): Boolean { + return !(isDataSaverEnabled(context) || isBackgroundRestricted(context)) + } + /** * For API level 24+ check if data saver is enabled * Else always return false @@ -131,13 +146,30 @@ object ConnectivityHelper { * * @see ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED */ - fun isDataSaverEnabled(context: Context): Boolean { + private fun isDataSaverEnabled(context: Context): Boolean { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager connectivityManager.restrictBackgroundStatus != ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED } else false } + /** + * For API level 28+ check if background is restricted + * Else always return false + * + * @param context the context + * + * @return Boolean + * + * @see isBackgroundRestricted + */ + private fun isBackgroundRestricted(context: Context): Boolean { + val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + return activityManager.isBackgroundRestricted + } else return false + } + /** * Get bluetooth enabled status. *