diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index af68db19ca1589ef8749b660e9f795cc22c2e345..ba2c8514e8e554ce24ef0ebe4073cc14018979d1 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -945,9 +945,11 @@ public class XmppConnectionService extends Service { public boolean isDataSaverDisabled() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); + final ConnectivityManager connectivityManager = + (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); return !connectivityManager.isActiveNetworkMetered() - || connectivityManager.getRestrictBackgroundStatus() == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED; + || Compatibility.getRestrictBackgroundStatus(connectivityManager) + == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED; } else { return true; } diff --git a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java index 6ac8f7279de8a568c0906e881d6690e9be4dd5ff..644bd7ec55244059146ab2a1b1ef384d7672e564 100644 --- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java @@ -80,6 +80,7 @@ import eu.siacs.conversations.ui.util.MenuDoubleTabUtil; import eu.siacs.conversations.ui.util.PresenceSelector; import eu.siacs.conversations.ui.util.SoftKeyboardUtils; import eu.siacs.conversations.utils.AccountUtils; +import eu.siacs.conversations.utils.Compatibility; import eu.siacs.conversations.utils.ExceptionHelper; import eu.siacs.conversations.ui.util.SettingsUtils; import eu.siacs.conversations.utils.ThemeHelper; @@ -448,22 +449,12 @@ public abstract class XmppActivity extends ActionBarActivity { final ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); return cm != null && cm.isActiveNetworkMetered() - && getRestrictBackgroundStatus(cm) == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED; + && Compatibility.getRestrictBackgroundStatus(cm) == ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED; } else { return false; } } - @RequiresApi(api = Build.VERSION_CODES.N) - private static int getRestrictBackgroundStatus(@NonNull final ConnectivityManager connectivityManager) { - try { - return connectivityManager.getRestrictBackgroundStatus(); - } catch (final Exception e) { - Log.d(Config.LOGTAG,"platform bug detected. Unable to get restrict background status",e); - return -1; - } - } - private boolean usingEnterKey() { return getBooleanPreference("display_enter_key", R.bool.display_enter_key); } diff --git a/src/main/java/eu/siacs/conversations/utils/Compatibility.java b/src/main/java/eu/siacs/conversations/utils/Compatibility.java index c28b8fe29681302eabaf5efa59d8c6dbf6cc412b..b1145794d13eaf946dc9d7bc5fa7de2ac5e65348 100644 --- a/src/main/java/eu/siacs/conversations/utils/Compatibility.java +++ b/src/main/java/eu/siacs/conversations/utils/Compatibility.java @@ -8,6 +8,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.net.ConnectivityManager; import android.os.Build; import android.preference.Preference; import android.preference.PreferenceCategory; @@ -15,6 +16,8 @@ import android.preference.PreferenceManager; import android.util.Log; import androidx.annotation.BoolRes; +import androidx.annotation.NonNull; +import androidx.annotation.RequiresApi; import androidx.core.content.ContextCompat; import java.util.Arrays; @@ -158,10 +161,20 @@ public class Compatibility { @SuppressLint("UnsupportedChromeOsCameraSystemFeature") public static boolean hasFeatureCamera(final Context context) { final PackageManager packageManager = context.getPackageManager(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - return packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY); - } else { - return packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA); + return packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY); + } + + @RequiresApi(api = Build.VERSION_CODES.N) + public static int getRestrictBackgroundStatus( + @NonNull final ConnectivityManager connectivityManager) { + try { + return connectivityManager.getRestrictBackgroundStatus(); + } catch (final Exception e) { + Log.d( + Config.LOGTAG, + "platform bug detected. Unable to get restrict background status", + e); + return ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED; } } }