diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml
index f440b65c2..a32d58212 100644
--- a/astrid/AndroidManifest.xml
+++ b/astrid/AndroidManifest.xml
@@ -227,8 +227,6 @@
-
-
@@ -293,14 +291,6 @@
-
-
-
-
-
-
@@ -512,6 +502,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
? AND " + Calendars.EVENTS_DTSTART_COL + " < ?",
@@ -50,7 +51,6 @@ public class CalendarAlarmScheduler {
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
CalendarAlarmReceiver.REQUEST_CODE_CAL_REMINDER, eventAlarm, 0);
- AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
am.cancel(pendingIntent);
long alarmTime = start - DateUtilities.ONE_MINUTE * 15;
@@ -61,6 +61,13 @@ public class CalendarAlarmScheduler {
}
}
+
+ // Schedule alarm to recheck and reschedule calendar alarms in 12 hours
+ Intent rescheduleAlarm = new Intent(CalendarStartupReceiver.BROADCAST_RESCHEDULE_CAL_ALARMS);
+ PendingIntent pendingReschedule = PendingIntent.getBroadcast(context, 0,
+ rescheduleAlarm, 0);
+ am.cancel(pendingReschedule);
+ am.set(AlarmManager.RTC, DateUtilities.now() + DateUtilities.ONE_HOUR * 12, pendingReschedule);
} finally {
events.close();
}
diff --git a/astrid/plugin-src/com/todoroo/astrid/gcal/CalendarStartupReceiver.java b/astrid/plugin-src/com/todoroo/astrid/gcal/CalendarStartupReceiver.java
new file mode 100644
index 000000000..3cad18fa8
--- /dev/null
+++ b/astrid/plugin-src/com/todoroo/astrid/gcal/CalendarStartupReceiver.java
@@ -0,0 +1,33 @@
+package com.todoroo.astrid.gcal;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import com.timsu.astrid.R;
+import com.todoroo.andlib.service.ContextManager;
+import com.todoroo.andlib.utility.Preferences;
+import com.todoroo.astrid.api.AstridApiConstants;
+
+public class CalendarStartupReceiver extends BroadcastReceiver {
+
+ public static final String BROADCAST_RESCHEDULE_CAL_ALARMS = AstridApiConstants.PACKAGE + ".SCHEDULE_CAL_REMINDERS"; //$NON-NLS-1$
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ ContextManager.setContext(context);
+ scheduleCalendarAlarms(context);
+ }
+
+ public static void scheduleCalendarAlarms(final Context context) {
+ if (!Preferences.getBoolean(R.string.p_calendar_reminders, true))
+ return;
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ CalendarAlarmScheduler.scheduleAllCalendarAlarms(context);
+ }
+ }).start();
+ }
+
+}
diff --git a/astrid/src/com/todoroo/astrid/service/StartupService.java b/astrid/src/com/todoroo/astrid/service/StartupService.java
index 78e743203..e01ea0f79 100644
--- a/astrid/src/com/todoroo/astrid/service/StartupService.java
+++ b/astrid/src/com/todoroo/astrid/service/StartupService.java
@@ -46,7 +46,7 @@ import com.todoroo.astrid.backup.BackupService;
import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.data.Task;
-import com.todoroo.astrid.gcal.CalendarAlarmScheduler;
+import com.todoroo.astrid.gcal.CalendarStartupReceiver;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.gtasks.sync.GtasksSyncService;
import com.todoroo.astrid.opencrx.OpencrxCoreUtils;
@@ -120,7 +120,6 @@ public class StartupService {
if(hasStartedUp || context == null)
return;
-
// sets up context manager
ContextManager.setContext(context);
@@ -192,8 +191,6 @@ public class StartupService {
AstridPreferences.setCurrentVersionName(versionName);
}
- CalendarAlarmScheduler.scheduleAllCalendarAlarms(context);
-
upgradeService.performSecondaryUpgrade(context);
final int finalLatestVersion = latestSetVersion;
@@ -225,6 +222,7 @@ public class StartupService {
// perform initialization
ReminderStartupReceiver.startReminderSchedulingService(context);
+ CalendarStartupReceiver.scheduleCalendarAlarms(context);
BackupService.scheduleService(context);
actFmSyncService.initialize();