Skeleton for reengagement notifications

pull/14/head
Sam Bosley 12 years ago
parent bd71eb16d2
commit 1150f21f2b

@ -209,6 +209,12 @@
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
<receiver android:name="com.todoroo.astrid.reminder.ReengagementReceiver">
<intent-filter>
<action android:name="com.timsu.astrid.SHOW_REENGAGEMENT"/>
</intent-filter>
</receiver>
<!-- ======================================================== Services = -->

@ -0,0 +1,24 @@
package com.todoroo.astrid.reminders;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.todoroo.andlib.utility.Preferences;
public class ReengagementReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int reengagementReminders = Preferences.getInt(ReengagementService.PREF_REENGAGEMENT_COUNT, 1);
Preferences.setInt(ReengagementService.PREF_REENGAGEMENT_COUNT, reengagementReminders + 1);
// TODO: show dialog
ReengagementService.scheduleReengagementAlarm(context);
}
}

@ -0,0 +1,41 @@
package com.todoroo.astrid.reminders;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.utility.Constants;
public final class ReengagementService {
private static final int REQUEST_CODE = 10;
public static final String PREF_REENGAGEMENT_COUNT = "pref_reengagement_count"; //$NON-NLS-1$
public static final String BROADCAST_SHOW_REENGAGEMENT = Constants.PACKAGE + ".SHOW_REENGAGEMENT"; //$NON-NLS-1$
public static void scheduleReengagementAlarm(Context context) {
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(BROADCAST_SHOW_REENGAGEMENT);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, 0);
am.cancel(pendingIntent);
long time = getNextReminderTime();
am.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
}
private static long getNextReminderTime() {
int reengagementReminders = Preferences.getInt(PREF_REENGAGEMENT_COUNT, 1);
int days;
if (reengagementReminders >= 4)
days = 12;
else
days = 3 * reengagementReminders;
return DateUtilities.now() + DateUtilities.ONE_DAY * days;
}
}
Loading…
Cancel
Save