diff options
author | James Lemieux <jplemieux@google.com> | 2016-01-20 16:30:58 -0800 |
---|---|---|
committer | James Lemieux <jplemieux@google.com> | 2016-01-20 16:38:21 -0800 |
commit | a21a311d051856e4fe9d2f43d144953535749ddf (patch) | |
tree | 926e219a1028b8add5c8327e586e3fe59823315f | |
parent | f93d6c754b0b511f36c12997e498df8d3efe4e71 (diff) | |
download | android_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.xml | 8 | ||||
-rw-r--r-- | src/com/android/deskclock/timer/TimerReceiver.java | 43 |
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 |