From e42d41ef30170c77233a7dd7a94405ec3c5287e1 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Sat, 10 Sep 2022 19:57:57 -0500 Subject: [PATCH] Bump minSdk to 28 This change is mostly to reduce the number of APIs we need to run tests for (from 11 APIs to 6). API 27 was released 5 years ago. Also, as of 2022-09-01, 95.1% of our monthly active users are on API 28 or higher. --- uhabits-android/build.gradle.kts | 2 +- .../com/android/datetimepicker/Utils.java | 7 +--- .../datetimepicker/date/DayPickerView.java | 4 -- .../activities/settings/SettingsFragment.kt | 9 +---- .../notifications/AndroidNotificationTray.kt | 14 +++---- .../org/isoron/uhabits/utils/SystemUtils.kt | 11 +----- .../isoron/uhabits/widgets/CheckmarkWidget.kt | 3 -- .../drawable-v21/widget_button_background.xml | 39 ------------------- .../res/{drawable-v21 => drawable}/ripple.xml | 0 .../ripple_transparent.xml | 0 .../selected_box.xml | 0 .../res/drawable/widget_button_background.xml | 25 +++++++----- uhabits-android/src/main/res/mipmap-anydpi | 0 .../res/values-v21/styles_list_habits.xml | 23 ----------- 14 files changed, 26 insertions(+), 111 deletions(-) delete mode 100644 uhabits-android/src/main/res/drawable-v21/widget_button_background.xml rename uhabits-android/src/main/res/{drawable-v21 => drawable}/ripple.xml (100%) rename uhabits-android/src/main/res/{drawable-v21 => drawable}/ripple_transparent.xml (100%) rename uhabits-android/src/main/res/{drawable-v21 => drawable}/selected_box.xml (100%) create mode 100644 uhabits-android/src/main/res/mipmap-anydpi delete mode 100644 uhabits-android/src/main/res/values-v21/styles_list_habits.xml diff --git a/uhabits-android/build.gradle.kts b/uhabits-android/build.gradle.kts index 8dc354c7f..022d7941e 100644 --- a/uhabits-android/build.gradle.kts +++ b/uhabits-android/build.gradle.kts @@ -37,7 +37,7 @@ android { defaultConfig { versionCode = 20100 versionName = "2.1.0" - minSdk = 23 + minSdk = 28 targetSdk = 31 applicationId = "org.isoron.uhabits" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/uhabits-android/src/main/java/com/android/datetimepicker/Utils.java b/uhabits-android/src/main/java/com/android/datetimepicker/Utils.java index 37dd730be..1a69f412b 100644 --- a/uhabits-android/src/main/java/com/android/datetimepicker/Utils.java +++ b/uhabits-android/src/main/java/com/android/datetimepicker/Utils.java @@ -22,7 +22,6 @@ import android.animation.Keyframe; import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; import android.annotation.SuppressLint; -import android.os.Build; import android.text.format.Time; import android.view.View; @@ -43,17 +42,13 @@ public class Utils { static final String SHARED_PREFS_NAME = "com.android.calendar_preferences"; - public static boolean isJellybeanOrLater() { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; - } - /** * Try to speak the specified text, for accessibility. Only available on JB or later. * @param text Text to announce. */ @SuppressLint("NewApi") public static void tryAccessibilityAnnounce(View view, CharSequence text) { - if (isJellybeanOrLater() && view != null && text != null) { + if (view != null && text != null) { view.announceForAccessibility(text); } } diff --git a/uhabits-android/src/main/java/com/android/datetimepicker/date/DayPickerView.java b/uhabits-android/src/main/java/com/android/datetimepicker/date/DayPickerView.java index 05348fe8c..b18c358b0 100644 --- a/uhabits-android/src/main/java/com/android/datetimepicker/date/DayPickerView.java +++ b/uhabits-android/src/main/java/com/android/datetimepicker/date/DayPickerView.java @@ -383,10 +383,6 @@ public abstract class DayPickerView extends ListView implements OnScrollListener if (child instanceof MonthView) { final CalendarDay focus = ((MonthView) child).getAccessibilityFocus(); if (focus != null) { - if (Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN_MR1) { - // Clear focus to avoid ListView bug in Jelly Bean MR1. - ((MonthView) child).clearAccessibilityFocus(); - } return focus; } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/settings/SettingsFragment.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/settings/SettingsFragment.kt index f297b5e0d..28fbd63d8 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/settings/SettingsFragment.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/settings/SettingsFragment.kt @@ -22,8 +22,6 @@ import android.app.backup.BackupManager import android.content.Intent import android.content.SharedPreferences import android.content.SharedPreferences.OnSharedPreferenceChangeListener -import android.os.Build -import android.os.Build.VERSION.SDK_INT import android.os.Bundle import android.provider.Settings import android.util.Log @@ -98,7 +96,6 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis showRingtonePicker() return true } else if (key == "reminderCustomize") { - if (SDK_INT < Build.VERSION_CODES.O) return true createAndroidNotificationChannel(requireContext()) val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS) intent.putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName) @@ -120,11 +117,7 @@ class SettingsFragment : PreferenceFragmentCompat(), OnSharedPreferenceChangeLis } updateWeekdayPreference() - if (SDK_INT < Build.VERSION_CODES.O) - findPreference("reminderCustomize").isVisible = false - else { - findPreference("reminderSound").isVisible = false - } + findPreference("reminderSound").isVisible = false } private fun updateWeekdayPreference() { diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt b/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt index 47279f3d8..09d8f8b46 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt @@ -168,14 +168,12 @@ class AndroidNotificationTray fun createAndroidNotificationChannel(context: Context) { val notificationManager = context.getSystemService(Activity.NOTIFICATION_SERVICE) as NotificationManager - if (SDK_INT >= Build.VERSION_CODES.O) { - val channel = NotificationChannel( - REMINDERS_CHANNEL_ID, - context.resources.getString(R.string.reminder), - NotificationManager.IMPORTANCE_DEFAULT - ) - notificationManager.createNotificationChannel(channel) - } + val channel = NotificationChannel( + REMINDERS_CHANNEL_ID, + context.resources.getString(R.string.reminder), + NotificationManager.IMPORTANCE_DEFAULT + ) + notificationManager.createNotificationChannel(channel) } } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/utils/SystemUtils.kt b/uhabits-android/src/main/java/org/isoron/uhabits/utils/SystemUtils.kt index 8fe759169..608abcff1 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/utils/SystemUtils.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/utils/SystemUtils.kt @@ -21,18 +21,11 @@ package org.isoron.uhabits.utils import android.app.Activity import android.app.KeyguardManager import android.content.Context -import android.os.Build -import android.os.Build.VERSION.SDK_INT -import android.view.WindowManager object SystemUtils { fun unlockScreen(activity: Activity) { - if (SDK_INT >= Build.VERSION_CODES.O) { - val km = activity.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager - km.requestDismissKeyguard(activity, null) - } else { - activity.window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD) - } + val km = activity.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager + km.requestDismissKeyguard(activity, null) } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/CheckmarkWidget.kt b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/CheckmarkWidget.kt index fbbb7ffd1..66d1da842 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/CheckmarkWidget.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/CheckmarkWidget.kt @@ -21,9 +21,7 @@ package org.isoron.uhabits.widgets import android.app.PendingIntent import android.content.Context -import android.os.Build import android.view.View -import androidx.annotation.RequiresApi import org.isoron.platform.gui.toInt import org.isoron.uhabits.core.models.Entry import org.isoron.uhabits.core.models.Habit @@ -49,7 +47,6 @@ open class CheckmarkWidget( } } - @RequiresApi(Build.VERSION_CODES.O) override fun refreshData(widgetView: View) { (widgetView as CheckmarkWidgetView).apply { val today = DateUtils.getTodayWithOffset() diff --git a/uhabits-android/src/main/res/drawable-v21/widget_button_background.xml b/uhabits-android/src/main/res/drawable-v21/widget_button_background.xml deleted file mode 100644 index 9187c326a..000000000 --- a/uhabits-android/src/main/res/drawable-v21/widget_button_background.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/uhabits-android/src/main/res/drawable-v21/ripple.xml b/uhabits-android/src/main/res/drawable/ripple.xml similarity index 100% rename from uhabits-android/src/main/res/drawable-v21/ripple.xml rename to uhabits-android/src/main/res/drawable/ripple.xml diff --git a/uhabits-android/src/main/res/drawable-v21/ripple_transparent.xml b/uhabits-android/src/main/res/drawable/ripple_transparent.xml similarity index 100% rename from uhabits-android/src/main/res/drawable-v21/ripple_transparent.xml rename to uhabits-android/src/main/res/drawable/ripple_transparent.xml diff --git a/uhabits-android/src/main/res/drawable-v21/selected_box.xml b/uhabits-android/src/main/res/drawable/selected_box.xml similarity index 100% rename from uhabits-android/src/main/res/drawable-v21/selected_box.xml rename to uhabits-android/src/main/res/drawable/selected_box.xml diff --git a/uhabits-android/src/main/res/drawable/widget_button_background.xml b/uhabits-android/src/main/res/drawable/widget_button_background.xml index 09785886f..9187c326a 100644 --- a/uhabits-android/src/main/res/drawable/widget_button_background.xml +++ b/uhabits-android/src/main/res/drawable/widget_button_background.xml @@ -17,18 +17,23 @@ ~ with this program. If not, see . --> - - - - + + + + + - + + - + - + + diff --git a/uhabits-android/src/main/res/mipmap-anydpi b/uhabits-android/src/main/res/mipmap-anydpi new file mode 100644 index 000000000..e69de29bb diff --git a/uhabits-android/src/main/res/values-v21/styles_list_habits.xml b/uhabits-android/src/main/res/values-v21/styles_list_habits.xml deleted file mode 100644 index b433ddf8e..000000000 --- a/uhabits-android/src/main/res/values-v21/styles_list_habits.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - \ No newline at end of file