From 2de5824ddfad081a29590519ba6107a1056b6f9a Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Tue, 9 Dec 2014 12:06:29 -0600 Subject: [PATCH] Add android version checks --- .../FloatingActionButton.java | 4 ++- .../andlib/utility/AndroidUtilities.java | 36 ++++++++++++++++--- .../astrid/activity/EditPreferences.java | 4 ++- .../astrid/activity/TaskEditFragment.java | 3 +- .../todoroo/astrid/adapter/TaskAdapter.java | 3 +- .../astrid/gcal/CalendarAlarmReceiver.java | 5 +-- .../com/todoroo/astrid/gcal/Calendars.java | 9 +++-- .../com/todoroo/astrid/gcal/GCalHelper.java | 6 ++-- .../todoroo/astrid/ui/DateChangedAlerts.java | 3 +- .../todoroo/astrid/widget/TasksWidget.java | 5 +-- .../astrid/widget/WidgetConfigActivity.java | 4 ++- .../preferences/ActivityPreferences.java | 5 +-- .../java/org/tasks/widget/WidgetHelper.java | 3 +- 13 files changed, 67 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/faizmalkani/floatingactionbutton/FloatingActionButton.java b/src/main/java/com/faizmalkani/floatingactionbutton/FloatingActionButton.java index 214802693..d9032317c 100644 --- a/src/main/java/com/faizmalkani/floatingactionbutton/FloatingActionButton.java +++ b/src/main/java/com/faizmalkani/floatingactionbutton/FloatingActionButton.java @@ -15,6 +15,8 @@ import android.view.View; import org.tasks.R; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastHoneycomb; + public class FloatingActionButton extends View { private final Paint mButtonPaint = new Paint(Paint.ANTI_ALIAS_FLAG); @@ -49,7 +51,7 @@ public class FloatingActionButton extends View { mBitmap = ((BitmapDrawable) drawable).getBitmap(); } setWillNotDraw(false); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + if (atLeastHoneycomb()) { setLayerType(View.LAYER_TYPE_SOFTWARE, null); } } diff --git a/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java b/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java index 04a81cce6..34c009b22 100644 --- a/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java +++ b/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java @@ -9,6 +9,7 @@ import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ContentValues; import android.content.Context; +import android.os.Build; import android.os.Bundle; import android.text.InputType; import android.view.MotionEvent; @@ -346,11 +347,36 @@ public class AndroidUtilities { } } - /** - * @return Android SDK version as an integer. Works on all versions - */ - public static int getSdkVersion() { - return Integer.parseInt(android.os.Build.VERSION.SDK); + public static boolean preFroyo() { + return !atLeastFroyo(); + } + + public static boolean preGingerbreadMR1() { + return !atLeastGingerbreadMR1(); + } + + public static boolean preIceCreamSandwich() { + return !atLeastIceCreamSandwich(); + } + + public static boolean atLeastFroyo() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO; + } + + public static boolean atLeastGingerbread() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD; + } + + public static boolean atLeastGingerbreadMR1() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD_MR1; + } + + public static boolean atLeastHoneycomb() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; + } + + public static boolean atLeastIceCreamSandwich() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH; } /** diff --git a/src/main/java/com/todoroo/astrid/activity/EditPreferences.java b/src/main/java/com/todoroo/astrid/activity/EditPreferences.java index 10331564e..284b0e70d 100644 --- a/src/main/java/com/todoroo/astrid/activity/EditPreferences.java +++ b/src/main/java/com/todoroo/astrid/activity/EditPreferences.java @@ -47,6 +47,8 @@ import java.util.Map.Entry; import javax.inject.Inject; +import static com.todoroo.andlib.utility.AndroidUtilities.preFroyo; + /** * Displays the preference screen for users to edit their preferences * @@ -362,7 +364,7 @@ public class EditPreferences extends TodorooPreferenceActivity { } }); - if (AndroidUtilities.getSdkVersion() <= 7) { + if (preFroyo()) { searchForAndRemovePreference(getPreferenceScreen(), getString(R.string.p_calendar_reminders)); } else { findPreference(getString(R.string.p_calendar_reminders)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index 330b88e81..56ba5f683 100755 --- a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -96,6 +96,7 @@ import javax.inject.Inject; import butterknife.ButterKnife; import butterknife.InjectView; +import static com.todoroo.andlib.utility.AndroidUtilities.preGingerbreadMR1; import static org.tasks.files.FileHelper.getPathFromUri; /** @@ -885,7 +886,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { menu.clear(); inflater.inflate(R.menu.task_edit_fragment, menu); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD_MR1) { + if (preGingerbreadMR1()) { // media recorder aac support requires api level 10 // approximately 1% of current installs are using api level 7-9 menu.findItem(R.id.menu_record_note).setVisible(false); diff --git a/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java b/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java index e936bd441..6a74ad556 100644 --- a/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java @@ -63,6 +63,7 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastGingerbread; import static org.tasks.date.DateTimeUtils.newDate; /** @@ -481,7 +482,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable { params.height = LayoutParams.WRAP_CONTENT; Configuration config = fragment.getResources().getConfiguration(); int size = config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK; - if (AndroidUtilities.getSdkVersion() >= 9 && size == Configuration.SCREENLAYOUT_SIZE_XLARGE) { + if (atLeastGingerbread() && size == Configuration.SCREENLAYOUT_SIZE_XLARGE) { DisplayMetrics metrics = fragment.getResources().getDisplayMetrics(); params.width = metrics.widthPixels / 2; } diff --git a/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmReceiver.java b/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmReceiver.java index c447e0336..32d584117 100644 --- a/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmReceiver.java +++ b/src/main/java/com/todoroo/astrid/gcal/CalendarAlarmReceiver.java @@ -9,7 +9,6 @@ import android.database.Cursor; import android.net.Uri; import android.text.TextUtils; -import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.utility.Constants; @@ -25,6 +24,8 @@ import java.util.Set; import javax.inject.Inject; +import static com.todoroo.andlib.utility.AndroidUtilities.preFroyo; + public class CalendarAlarmReceiver extends InjectingBroadcastReceiver { private static final Logger log = LoggerFactory.getLogger(CalendarAlarmReceiver.class); @@ -80,7 +81,7 @@ public class CalendarAlarmReceiver extends InjectingBroadcastReceiver { ContentResolver cr = context.getContentResolver(); Uri eventUri = Calendars.getCalendarContentUri(Calendars.CALENDAR_CONTENT_EVENTS); - if (AndroidUtilities.getSdkVersion() <= 7) { + if (preFroyo()) { return; } diff --git a/src/main/java/com/todoroo/astrid/gcal/Calendars.java b/src/main/java/com/todoroo/astrid/gcal/Calendars.java index 9ab27ccdd..6efbfe043 100644 --- a/src/main/java/com/todoroo/astrid/gcal/Calendars.java +++ b/src/main/java/com/todoroo/astrid/gcal/Calendars.java @@ -12,6 +12,9 @@ import com.todoroo.andlib.utility.AndroidUtilities; import javax.inject.Singleton; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastFroyo; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastIceCreamSandwich; + @Singleton public class Calendars { @@ -19,7 +22,7 @@ public class Calendars { public static final String CALENDAR_CONTENT_EVENTS = "events"; public static final String CALENDAR_CONTENT_ATTENDEES = "attendees"; - private static final boolean USE_ICS_NAMES = AndroidUtilities.getSdkVersion() >= 14; + private static final boolean USE_ICS_NAMES = AndroidUtilities.atLeastIceCreamSandwich(); public static final String ID_COLUMN_NAME = "_id"; public static final String CALENDARS_DISPLAY_COL = (USE_ICS_NAMES ? CalendarContract.Calendars.CALENDAR_DISPLAY_NAME : "displayName"); @@ -48,11 +51,11 @@ public class Calendars { * @param table provider table, something like calendars, events */ public static Uri getCalendarContentUri(String table) { - if (AndroidUtilities.getSdkVersion() >= 14) { + if (atLeastIceCreamSandwich()) { return getIcsUri(table); } - if(AndroidUtilities.getSdkVersion() >= 8) { + if(atLeastFroyo()) { return Uri.parse("content://com.android.calendar/" + table); } else { return Uri.parse("content://calendar/" + table); diff --git a/src/main/java/com/todoroo/astrid/gcal/GCalHelper.java b/src/main/java/com/todoroo/astrid/gcal/GCalHelper.java index 8c16dc0ad..37330d09c 100644 --- a/src/main/java/com/todoroo/astrid/gcal/GCalHelper.java +++ b/src/main/java/com/todoroo/astrid/gcal/GCalHelper.java @@ -30,6 +30,8 @@ import java.util.TimeZone; import javax.inject.Inject; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastIceCreamSandwich; +import static com.todoroo.andlib.utility.AndroidUtilities.preIceCreamSandwich; import static com.todoroo.astrid.gcal.Calendars.getCalendarContentUri; public class GCalHelper { @@ -106,7 +108,7 @@ public class GCalHelper { values.put("title", task.getTitle()); values.put("description", task.getNotes()); values.put("hasAlarm", 0); - if (AndroidUtilities.getSdkVersion() < 14) { + if (preIceCreamSandwich()) { values.put("transparency", 0); values.put("visibility", 0); } @@ -241,7 +243,7 @@ public class GCalHelper { } private static void adjustDateForIcs(ContentValues values) { - if (AndroidUtilities.getSdkVersion() >= 14) { + if (atLeastIceCreamSandwich()) { if ("1".equals(values.get("allDay"))) { values.put("eventTimezone", Time.TIMEZONE_UTC); } else { diff --git a/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java b/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java index b31acf81f..3b636ca6c 100644 --- a/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java +++ b/src/main/java/com/todoroo/astrid/ui/DateChangedAlerts.java @@ -43,6 +43,7 @@ import java.text.ParseException; import javax.inject.Inject; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastGingerbread; import static org.tasks.date.DateTimeUtils.newDate; /** @@ -259,7 +260,7 @@ public class DateChangedAlerts { params.height = LayoutParams.WRAP_CONTENT; Configuration config = context.getResources().getConfiguration(); int size = config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK; - if (AndroidUtilities.getSdkVersion() >= 9 && size == Configuration.SCREENLAYOUT_SIZE_XLARGE || size == Configuration.SCREENLAYOUT_SIZE_LARGE) { + if (atLeastGingerbread() && size == Configuration.SCREENLAYOUT_SIZE_XLARGE || size == Configuration.SCREENLAYOUT_SIZE_LARGE) { DisplayMetrics metrics = context.getResources().getDisplayMetrics(); params.width = metrics.widthPixels / 2; } diff --git a/src/main/java/com/todoroo/astrid/widget/TasksWidget.java b/src/main/java/com/todoroo/astrid/widget/TasksWidget.java index 9490c8ab5..036d4bfd9 100644 --- a/src/main/java/com/todoroo/astrid/widget/TasksWidget.java +++ b/src/main/java/com/todoroo/astrid/widget/TasksWidget.java @@ -29,6 +29,7 @@ import org.tasks.widget.WidgetHelper; import javax.inject.Inject; +import static com.todoroo.andlib.utility.AndroidUtilities.preIceCreamSandwich; import static com.todoroo.astrid.api.AstridApiConstants.BROADCAST_EVENT_TASK_LIST_UPDATED; public class TasksWidget extends InjectingAppWidgetProvider { @@ -76,7 +77,7 @@ public class TasksWidget extends InjectingAppWidgetProvider { ContextManager.setContext(context); super.onUpdate(context, appWidgetManager, appWidgetIds); - if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + if (preIceCreamSandwich()) { // Start in service to prevent Application Not Responding timeout updateWidgets(context); } else { @@ -97,7 +98,7 @@ public class TasksWidget extends InjectingAppWidgetProvider { } suppressUpdateFlag = 0; - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + if (preIceCreamSandwich()) { context.startService(new Intent(context, WidgetUpdateService.class)); } else { updateScrollableWidgets(context, null); diff --git a/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java b/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java index 8ccacb3c8..b9c3842f1 100644 --- a/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java +++ b/src/main/java/com/todoroo/astrid/widget/WidgetConfigActivity.java @@ -30,6 +30,8 @@ import org.tasks.widget.WidgetHelper; import javax.inject.Inject; +import static com.todoroo.andlib.utility.AndroidUtilities.preIceCreamSandwich; + public class WidgetConfigActivity extends InjectingListActivity { public static final String PREF_TITLE = "widget-title-"; @@ -49,7 +51,7 @@ public class WidgetConfigActivity extends InjectingListActivity { @Inject ActivityPreferences preferences; private void updateWidget() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + if (preIceCreamSandwich()) { Intent intent = new Intent(this, WidgetUpdateService.class); intent.putExtra(WidgetUpdateService.EXTRA_WIDGET_ID, mAppWidgetId); startService(intent); diff --git a/src/main/java/org/tasks/preferences/ActivityPreferences.java b/src/main/java/org/tasks/preferences/ActivityPreferences.java index 5d56642a2..7bd33e45b 100644 --- a/src/main/java/org/tasks/preferences/ActivityPreferences.java +++ b/src/main/java/org/tasks/preferences/ActivityPreferences.java @@ -13,6 +13,8 @@ import org.tasks.R; import javax.inject.Inject; import javax.inject.Singleton; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastIceCreamSandwich; + @Singleton public class ActivityPreferences extends Preferences { @@ -49,8 +51,7 @@ public class ActivityPreferences extends Preferences { } public int getEditDialogTheme() { - boolean ics = AndroidUtilities.getSdkVersion() >= 14; - return ics ? R.style.TEA_Dialog_Light_ICS : R.style.TEA_Dialog; + return atLeastIceCreamSandwich() ? R.style.TEA_Dialog_Light_ICS : R.style.TEA_Dialog; } /** diff --git a/src/main/java/org/tasks/widget/WidgetHelper.java b/src/main/java/org/tasks/widget/WidgetHelper.java index 9648d7f85..337a4758e 100644 --- a/src/main/java/org/tasks/widget/WidgetHelper.java +++ b/src/main/java/org/tasks/widget/WidgetHelper.java @@ -39,6 +39,7 @@ import javax.inject.Singleton; import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; +import static com.todoroo.andlib.utility.AndroidUtilities.preIceCreamSandwich; @Singleton public class WidgetHelper { @@ -46,7 +47,7 @@ public class WidgetHelper { public static int flags = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK; public static void startWidgetService(Context context) { - Class widgetServiceClass = android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH + Class widgetServiceClass = preIceCreamSandwich() ? WidgetUpdateService.class : ScrollableWidgetUpdateService.class; AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);