From 949d4a594b20b6b83123a5a569e22caeda909933 Mon Sep 17 00:00:00 2001 From: harambasicluka <64483219+harambasicluka@users.noreply.github.com> Date: Fri, 5 Jun 2020 20:14:50 +0200 Subject: [PATCH] Feature: IsBackgroundJob Enabled UI (#208) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Background work quick fix * Formatting * Background work improved * Formatting * Refactoring * Refactoring * Allow background data usage * Added isBackgroundRestricted * removed unused import Co-authored-by: Alexander Alferov <a.alferov@sap.com> Co-authored-by: Jakob Möller <jakob.moeller@sap.com> Co-authored-by: AlexanderAlferov <64849422+AlexanderAlferov@users.noreply.github.com> --- .../rki/coronawarnapp/ui/main/MainActivity.kt | 4 +-- .../coronawarnapp/util/ConnectivityHelper.kt | 34 ++++++++++++++++++- 2 files changed, 34 insertions(+), 4 deletions(-) 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 1d03c732a..c2f9e7bd1 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 457de57a6..7cd591d3b 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. * -- GitLab