also reschedule daily reminder

This commit is contained in:
Phillip Thelen 2016-10-26 19:56:26 +02:00
parent 05a4c88921
commit 022d655be3
4 changed files with 39 additions and 35 deletions

View file

@ -1,5 +1,6 @@
package com.habitrpg.android.habitica.helpers; package com.habitrpg.android.habitica.helpers;
import com.habitrpg.android.habitica.NotificationPublisher;
import com.habitrpg.android.habitica.events.ReminderDeleteEvent; import com.habitrpg.android.habitica.events.ReminderDeleteEvent;
import com.habitrpg.android.habitica.events.TaskDeleteEvent; import com.habitrpg.android.habitica.events.TaskDeleteEvent;
import com.habitrpg.android.habitica.events.TaskSaveEvent; import com.habitrpg.android.habitica.events.TaskSaveEvent;
@ -16,6 +17,7 @@ import android.app.AlarmManager;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.support.v7.preference.PreferenceManager;
import android.util.Log; import android.util.Log;
import java.util.Calendar; import java.util.Calendar;
@ -109,6 +111,8 @@ public class TaskAlarmManager {
for (Task task : tasks) { for (Task task : tasks) {
this.setAlarmsForTask(task); this.setAlarmsForTask(task);
} }
scheduleDailyReminder(context);
} }
private RemindersItem setTimeForDailyReminder(RemindersItem remindersItem, Task task) { private RemindersItem setTimeForDailyReminder(RemindersItem remindersItem, Task task) {
@ -161,4 +165,33 @@ public class TaskAlarmManager {
am.cancel(sender); am.cancel(sender);
} }
public static void scheduleDailyReminder(Context context) {
String timeval = PreferenceManager.getDefaultSharedPreferences(context).getString("reminder_time", "19:00");
String[] pieces = timeval.split(":");
int hour = Integer.parseInt(pieces[0]);
int minute = Integer.parseInt(pieces[1]);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
long trigger_time = cal.getTimeInMillis();
Intent notificationIntent = new Intent(context, NotificationPublisher.class);
notificationIntent.putExtra(NotificationPublisher.NOTIFICATION_ID, 1);
notificationIntent.putExtra(NotificationPublisher.CHECK_DAILIES, false);
if (PendingIntent.getBroadcast(context, 0, notificationIntent, PendingIntent.FLAG_NO_CREATE) == null) {
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, trigger_time, AlarmManager.INTERVAL_DAY, pendingIntent);
}
}
public static void removeDailyReminder(Context context) {
Intent notificationIntent = new Intent(context, NotificationPublisher.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent displayIntent = PendingIntent.getBroadcast(context, 0, notificationIntent, 0);
alarmManager.cancel(displayIntent);
}
} }

View file

@ -32,7 +32,6 @@ public class TaskReceiver extends BroadcastReceiver {
Bundle extras = arg1.getExtras(); Bundle extras = arg1.getExtras();
Log.e("EXTRAS", extras.toString());
if (extras != null) { if (extras != null) {
taskTitle = extras.getString(TaskAlarmManager.TASK_NAME_INTENT_KEY); taskTitle = extras.getString(TaskAlarmManager.TASK_NAME_INTENT_KEY);
taskId = extras.getString(TaskAlarmManager.TASK_ID_INTENT_KEY); taskId = extras.getString(TaskAlarmManager.TASK_ID_INTENT_KEY);

View file

@ -18,6 +18,7 @@ import com.habitrpg.android.habitica.NotificationPublisher;
import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.callbacks.MergeUserCallback; import com.habitrpg.android.habitica.callbacks.MergeUserCallback;
import com.habitrpg.android.habitica.helpers.LanguageHelper; import com.habitrpg.android.habitica.helpers.LanguageHelper;
import com.habitrpg.android.habitica.helpers.TaskAlarmManager;
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager; import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager;
import com.habitrpg.android.habitica.prefs.TimePreference; import com.habitrpg.android.habitica.prefs.TimePreference;
import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity; import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity;
@ -153,36 +154,7 @@ public class PreferencesFragment extends BasePreferencesFragment implements
return super.onPreferenceTreeClick(preference); return super.onPreferenceTreeClick(preference);
} }
private void scheduleNotifications() {
String timeval = getPreferenceManager().getSharedPreferences().getString("reminder_time", "19:00");
String[] pieces = timeval.split(":");
int hour = Integer.parseInt(pieces[0]);
int minute = Integer.parseInt(pieces[1]);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
long trigger_time = cal.getTimeInMillis();
Intent notificationIntent = new Intent(context, NotificationPublisher.class);
notificationIntent.putExtra(NotificationPublisher.NOTIFICATION_ID, 1);
notificationIntent.putExtra(NotificationPublisher.CHECK_DAILIES, false);
if (PendingIntent.getBroadcast(context, 0, notificationIntent, PendingIntent.FLAG_NO_CREATE) == null) {
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, trigger_time, AlarmManager.INTERVAL_DAY, pendingIntent);
}
}
private void removeNotifications() {
Intent notificationIntent = new Intent(context, NotificationPublisher.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent displayIntent = PendingIntent.getBroadcast(context, 0, notificationIntent, 0);
alarmManager.cancel(displayIntent);
}
@Override @Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
@ -190,13 +162,13 @@ public class PreferencesFragment extends BasePreferencesFragment implements
boolean use_reminder = sharedPreferences.getBoolean(key, false); boolean use_reminder = sharedPreferences.getBoolean(key, false);
timePreference.setEnabled(use_reminder); timePreference.setEnabled(use_reminder);
if (use_reminder) { if (use_reminder) {
scheduleNotifications(); TaskAlarmManager.scheduleDailyReminder(context);
} else { } else {
removeNotifications(); TaskAlarmManager.removeDailyReminder(context);
} }
} else if (key.equals("reminder_time")) { } else if (key.equals("reminder_time")) {
removeNotifications(); TaskAlarmManager.removeDailyReminder(context);
scheduleNotifications(); TaskAlarmManager.scheduleDailyReminder(context);
} else if (key.equals("usePushNotifications")) { } else if (key.equals("usePushNotifications")) {
boolean userPushNotifications = sharedPreferences.getBoolean(key, false); boolean userPushNotifications = sharedPreferences.getBoolean(key, false);
pushNotificationsPreference.setEnabled(userPushNotifications); pushNotificationsPreference.setEnabled(userPushNotifications);

View file

@ -5,7 +5,7 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:2.2.1' classpath 'com.android.tools.build:gradle:2.2.2'
classpath 'com.android.databinding:dataBinder:1.0-rc4' classpath 'com.android.databinding:dataBinder:1.0-rc4'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'com.google.gms:google-services:3.0.0' classpath 'com.google.gms:google-services:3.0.0'