summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Lemieux <jplemieux@google.com>2016-01-20 16:30:58 -0800
committerJames Lemieux <jplemieux@google.com>2016-01-20 16:38:21 -0800
commita21a311d051856e4fe9d2f43d144953535749ddf (patch)
tree926e219a1028b8add5c8327e586e3fe59823315f
parentf93d6c754b0b511f36c12997e498df8d3efe4e71 (diff)
downloadandroid_packages_apps_DeskClock-a21a311d051856e4fe9d2f43d144953535749ddf.tar.gz
android_packages_apps_DeskClock-a21a311d051856e4fe9d2f43d144953535749ddf.tar.bz2
android_packages_apps_DeskClock-a21a311d051856e4fe9d2f43d144953535749ddf.zip
Fire timers as scheduled after app upgrade
Bug: 26676588 Timer refactoring has removed TimerReceiver, however, timers scheduled in 4.2.1 and prior use TimerReceiver as the entry point for expiring a timer. TimerReceiver must be kept in place for at least one release cycle in order to correctly fire legacy timers at their scheduled time. Change-Id: I0e3a751fce981fc22911d869f375b0cd40dde438
-rw-r--r--AndroidManifest.xml8
-rw-r--r--src/com/android/deskclock/timer/TimerReceiver.java43
2 files changed, 51 insertions, 0 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6553a80ac..441ad87f9 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -324,6 +324,14 @@
android:taskAffinity=""
android:configChanges="screenSize|keyboardHidden|keyboard|navigation"/>
+ <!-- Legacy broadcast receiver that honors old scheduled timers across app upgrade. -->
+ <receiver android:name="com.android.deskclock.timer.TimerReceiver"
+ android:exported="false">
+ <intent-filter>
+ <action android:name="times_up" />
+ </intent-filter>
+ </receiver>
+
<service android:name=".timer.TimerService"
android:exported="false"
android:description="@string/timer_service_desc">
diff --git a/src/com/android/deskclock/timer/TimerReceiver.java b/src/com/android/deskclock/timer/TimerReceiver.java
new file mode 100644
index 000000000..7a41789a4
--- /dev/null
+++ b/src/com/android/deskclock/timer/TimerReceiver.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.deskclock.timer;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.deskclock.LogUtils;
+import com.android.deskclock.data.DataModel;
+import com.android.deskclock.data.Timer;
+
+/**
+ * This broadcast receiver exists to handle timer expiry scheduled in 4.2.1 and prior. It must exist
+ * for at least one release cycle before removal to honor these old scheduled timers after upgrading
+ * beyond 4.2.1. After 4.2.1, all timer expiration is directed to TimerService.
+ */
+public class TimerReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ LogUtils.e("TimerReceiver", "Received legacy timer broadcast: %s", intent.getAction());
+
+ if ("times_up".equals(intent.getAction())) {
+ final int timerId = intent.getIntExtra("timer.intent.extra", -1);
+ final Timer timer = DataModel.getDataModel().getTimer(timerId);
+ context.startService(TimerService.createTimerExpiredIntent(context, timer));
+ }
+ }
+} \ No newline at end of file