diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayPickerActivity.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayPickerActivity.java index fe2e33e0c..a66cc34a5 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayPickerActivity.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayPickerActivity.java @@ -18,6 +18,7 @@ import com.android.datetimepicker.time.TimePickerDialog; import org.isoron.uhabits.*; import org.isoron.uhabits.core.models.*; import org.isoron.uhabits.receivers.*; +import org.isoron.uhabits.utils.*; import java.util.*; @@ -46,13 +47,6 @@ public class SnoozeDelayPickerActivity extends FragmentActivity habit = appComponent.getHabitList().getById(parseId(getIntent().getData())); if (habit == null) finish(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - KeyguardManager km = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); - km.requestDismissKeyguard(this, null); - } else { - getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); - } - int theme = R.style.Theme_AppCompat_Light_Dialog_Alert; dialog = new AlertDialog.Builder(new ContextThemeWrapper(this, theme)) .setTitle(R.string.select_snooze_delay) @@ -62,6 +56,8 @@ public class SnoozeDelayPickerActivity extends FragmentActivity dialog.getListView().setOnItemClickListener(this); dialog.setOnDismissListener(d -> finish()); dialog.show(); + + SystemUtils.unlockScreen(this); } private void showTimePicker() diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/utils/SystemUtils.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/utils/SystemUtils.java new file mode 100644 index 000000000..81adbc05e --- /dev/null +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/utils/SystemUtils.java @@ -0,0 +1,26 @@ +package org.isoron.uhabits.utils; + +import android.app.*; +import android.content.*; +import android.os.*; +import android.view.*; + + +public class SystemUtils +{ + public static boolean isAndroidOOrLater() + { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O; + } + + public static void unlockScreen(Activity activity) + { + if (isAndroidOOrLater()) { + KeyguardManager km = + (KeyguardManager) activity.getSystemService(Context.KEYGUARD_SERVICE); + km.requestDismissKeyguard(activity, null); + } else { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); + } + } +} diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt index 88e8d35c0..042506c0d 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt @@ -30,6 +30,7 @@ import org.isoron.uhabits.activities.common.dialogs.* import org.isoron.uhabits.core.ui.screens.habits.list.* import org.isoron.uhabits.core.ui.widgets.* import org.isoron.uhabits.intents.* +import org.isoron.uhabits.utils.* import org.isoron.uhabits.widgets.* class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPickerCallback { @@ -52,12 +53,7 @@ class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPi widgetUpdater = component.widgetUpdater showNumberSelector(this) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val km = getSystemService(KEYGUARD_SERVICE) as KeyguardManager - km.requestDismissKeyguard(this, null) - } else { - window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD) - } + SystemUtils.unlockScreen(this) } override fun onNumberPicked(newValue: Double) {