- Deal with time and timezone changes

This commit is contained in:
Timothy Allen 2014-04-15 13:26:29 +02:00
parent 54bd082e89
commit 571df2f2c2
3 changed files with 11 additions and 7 deletions

View File

@ -46,10 +46,12 @@
<receiver android:name="za.org.treehouse.hypoalarm.GraceReceiver" />
<receiver android:name="za.org.treehouse.hypoalarm.CancelGraceReceiver" />
<receiver
android:name="za.org.treehouse.hypoalarm.BootReceiver"
android:name="za.org.treehouse.hypoalarm.AlarmChangeReceiver"
android:enabled="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<action android:name="android.intent.action.TIME_SET" />
</intent-filter>
</receiver>

View File

@ -9,14 +9,16 @@ import android.util.Log;
import java.util.Calendar;
public class BootReceiver extends BroadcastReceiver {
public class AlarmChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED") ||
intent.getAction().equals("android.intent.action.TIMEZONE_CHANGED") ||
intent.getAction().equals("android.intent.action.TIME_SET")) {
String alarmTimeStr = sharedPref.getString(context.getString(R.string.AlarmTimePref), null);
Calendar cal = MainActivity.TimeStringToCalendar(alarmTimeStr);
Log.d("BootReceiver", "Booting: Setting alarm for " + MainActivity.debugDate(cal));
Log.d("AlarmChangeReceiver", intent.getAction() + ": resetting alarm for " + MainActivity.debugDate(cal));
MainActivity.resetAlarm(context, cal);
}
}

View File

@ -342,13 +342,13 @@ public class MainActivity extends ActionBarActivity {
}
Log.d("MainActivity", "Setting pre-alarm for " + MainActivity.debugDate(preNotifyCal));
// Set boot receiver, so alarm restarts on boot
ComponentName bootReceiver = new ComponentName(context, BootReceiver.class);
// Set time change and boot receiver, so alarm restarts on boot
ComponentName bootReceiver = new ComponentName(context, AlarmChangeReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(bootReceiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
Log.d("MainActivity", "Setting BootReceiver");
Log.d("MainActivity", "Setting boot receiver");
}
}