• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="utf-8"?>
2<!--
3  Copyright (C) 2015 The Android Open Source Project
4
5  Licensed under the Apache License, Version 2.0 (the "License");
6  you may not use this file except in compliance with the License.
7  You may obtain a copy of the License at
8
9    http://www.apache.org/licenses/LICENSE-2.0
10
11  Unless required by applicable law or agreed to in writing, software
12  distributed under the License is distributed on an "AS IS" BASIS,
13  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  See the License for the specific language governing permissions and
15  limitations under the License.
16  -->
17
18<manifest xmlns:android="http://schemas.android.com/apk/res/android"
19        package="com.android.deskclock"
20        android:versionCode="450" android:versionName="4.5.0">
21
22    <original-package android:name="com.android.alarmclock" />
23    <original-package android:name="com.android.deskclock" />
24
25    <uses-sdk android:minSdkVersion="19" />
26
27    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
28    <uses-permission android:name="android.permission.WAKE_LOCK"/>
29    <uses-permission android:name="android.permission.VIBRATE"/>
30    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
31    <!-- WRITE_SETTINGS is required to record the upcoming alarm prior to L -->
32    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
33    <!-- READ_PHONE_STATE is required to determine when a phone call exists prior to M -->
34    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
35    <!-- READ_EXTERNAL_STORAGE is required to play custom ringtones from the SD card prior to M -->
36    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
37
38    <application android:label="@string/app_label"
39                 android:name=".DeskClockApplication"
40                 android:allowBackup="true"
41                 android:backupAgent="DeskClockBackupAgent"
42                 android:fullBackupContent="@xml/backup_scheme"
43                 android:fullBackupOnly="true"
44                 android:icon="@mipmap/ic_launcher_alarmclock"
45                 android:requiredForAllUsers="true"
46                 android:supportsRtl="true">
47
48        <provider android:name=".provider.ClockProvider"
49                android:authorities="com.android.deskclock"
50                android:exported="false"
51                android:directBootAware="true" />
52
53        <activity android:name="DeskClock"
54                android:label="@string/app_label"
55                android:theme="@style/DeskClockTheme"
56                android:icon="@mipmap/ic_launcher_alarmclock"
57                android:launchMode="singleTask">
58
59            <intent-filter>
60                <action android:name="android.intent.action.MAIN" />
61                <category android:name="android.intent.category.DEFAULT" />
62                <category android:name="android.intent.category.LAUNCHER" />
63            </intent-filter>
64        </activity>
65
66        <activity-alias android:name="DockClock"
67                android:targetActivity="DeskClock"
68                android:label="@string/app_label"
69                android:theme="@style/DeskClockTheme"
70                android:icon="@mipmap/ic_launcher_alarmclock"
71                android:launchMode="singleTask"
72                android:enabled="@bool/config_dockAppEnabled"
73                >
74            <intent-filter>
75                <action android:name="android.intent.action.MAIN" />
76                <category android:name="android.intent.category.DEFAULT" />
77                <category android:name="android.intent.category.DESK_DOCK" />
78            </intent-filter>
79        </activity-alias>
80
81        <activity android:name=".settings.SettingsActivity"
82                android:label="@string/settings"
83                android:theme="@style/SettingsTheme"
84                android:taskAffinity=""
85                android:excludeFromRecents="true"
86                >
87            <intent-filter>
88                <action android:name="android.intent.action.MAIN" />
89            </intent-filter>
90        </activity>
91
92        <activity android:name=".worldclock.CitySelectionActivity"
93                android:label="@string/cities_activity_title"
94                android:theme="@style/CitiesTheme"
95                android:taskAffinity=""
96                android:excludeFromRecents="true">
97            <intent-filter>
98                <action android:name="android.intent.action.MAIN" />
99            </intent-filter>
100        </activity>
101
102        <activity android:name=".alarms.AlarmActivity"
103                android:taskAffinity=""
104                android:excludeFromRecents="true"
105                android:theme="@style/AlarmAlertFullScreenTheme"
106                android:windowSoftInputMode="stateAlwaysHidden"
107                android:showOnLockScreen="true"
108                android:directBootAware="true" />
109
110        <activity android:name="ScreensaverActivity"
111                android:excludeFromRecents="true"
112                android:taskAffinity=""
113                android:theme="@style/ScreensaverActivityTheme"
114                android:configChanges="orientation|screenSize|keyboardHidden|keyboard" />
115
116        <receiver android:name=".alarms.AlarmStateManager"
117                  android:exported="false"
118                  android:directBootAware="true">
119        </receiver>
120
121        <service android:name=".alarms.AlarmService"
122                 android:exported="false"
123                 android:directBootAware="true">
124        </service>
125
126        <activity android:name="HandleApiCalls"
127                android:theme="@android:style/Theme.NoDisplay"
128                android:excludeFromRecents="true"
129                android:launchMode="singleTask"
130                android:permission="com.android.alarm.permission.SET_ALARM"
131                android:taskAffinity="">
132            <intent-filter>
133                <action android:name="android.intent.action.SET_ALARM" />
134                <category android:name="android.intent.category.DEFAULT" />
135                <category android:name="android.intent.category.VOICE" />
136            </intent-filter>
137            <intent-filter>
138                <action android:name="android.intent.action.DISMISS_ALARM" />
139                <category android:name="android.intent.category.DEFAULT" />
140                <category android:name="android.intent.category.VOICE" />
141            </intent-filter>
142            <intent-filter>
143                <action android:name="android.intent.action.SNOOZE_ALARM" />
144                <category android:name="android.intent.category.DEFAULT" />
145                <category android:name="android.intent.category.VOICE" />
146            </intent-filter>
147            <intent-filter>
148                <action android:name="android.intent.action.SHOW_ALARMS" />
149                <category android:name="android.intent.category.DEFAULT" />
150                <category android:name="android.intent.category.VOICE" />
151            </intent-filter>
152            <intent-filter>
153                <action android:name="android.intent.action.SET_TIMER" />
154                <category android:name="android.intent.category.DEFAULT" />
155                <category android:name="android.intent.category.VOICE" />
156            </intent-filter>
157        </activity>
158
159        <activity-alias android:name="HandleSetAlarm"
160            android:targetActivity=".HandleApiCalls"
161            android:exported="true">
162        </activity-alias>
163
164        <activity android:name=".HandleDeskClockApiCalls"
165            android:theme="@android:style/Theme.NoDisplay"
166            android:excludeFromRecents="true"
167            android:launchMode="singleTask"
168            android:permission="com.android.alarm.permission.SET_ALARM"
169            android:taskAffinity="">
170            <intent-filter>
171                <action android:name="com.android.deskclock.action.SHOW_CLOCK" />
172                <category android:name="android.intent.category.DEFAULT" />
173                <category android:name="android.intent.category.VOICE" />
174            </intent-filter>
175            <intent-filter>
176                <action android:name="com.android.deskclock.action.ADD_CLOCK" />
177                <category android:name="android.intent.category.DEFAULT" />
178                <category android:name="android.intent.category.VOICE" />
179            </intent-filter>
180            <intent-filter>
181                <action android:name="com.android.deskclock.action.DELETE_CLOCK" />
182                <category android:name="android.intent.category.DEFAULT" />
183                <category android:name="android.intent.category.VOICE" />
184            </intent-filter>
185            <intent-filter>
186                <action android:name="com.android.deskclock.action.START_TIMER" />
187                <category android:name="android.intent.category.DEFAULT" />
188                <category android:name="android.intent.category.VOICE" />
189            </intent-filter>
190            <intent-filter>
191                <action android:name="com.android.deskclock.action.RESET_TIMER" />
192                <category android:name="android.intent.category.DEFAULT" />
193                <category android:name="android.intent.category.VOICE" />
194            </intent-filter>
195            <intent-filter>
196                <action android:name="com.android.deskclock.action.PAUSE_TIMER" />
197                <category android:name="android.intent.category.DEFAULT" />
198                <category android:name="android.intent.category.VOICE" />
199            </intent-filter>
200            <intent-filter>
201                <action android:name="com.android.deskclock.action.SHOW_TIMERS" />
202                <category android:name="android.intent.category.DEFAULT" />
203                <category android:name="android.intent.category.VOICE" />
204            </intent-filter>
205            <intent-filter>
206                <action android:name="com.android.deskclock.action.DELETE_TIMER" />
207                <category android:name="android.intent.category.DEFAULT" />
208                <category android:name="android.intent.category.VOICE" />
209            </intent-filter>
210            <intent-filter>
211                <action android:name="com.android.deskclock.action.SHOW_STOPWATCH" />
212                <category android:name="android.intent.category.DEFAULT" />
213                <category android:name="android.intent.category.VOICE" />
214            </intent-filter>
215            <intent-filter>
216                <action android:name="com.android.deskclock.action.START_STOPWATCH" />
217                <category android:name="android.intent.category.DEFAULT" />
218                <category android:name="android.intent.category.VOICE" />
219            </intent-filter>
220            <intent-filter>
221                <action android:name="com.android.deskclock.action.PAUSE_STOPWATCH" />
222                <category android:name="android.intent.category.DEFAULT" />
223                <category android:name="android.intent.category.VOICE" />
224            </intent-filter>
225            <intent-filter>
226                <action android:name="com.android.deskclock.action.LAP_STOPWATCH" />
227                <category android:name="android.intent.category.DEFAULT" />
228                <category android:name="android.intent.category.VOICE" />
229            </intent-filter>
230            <intent-filter>
231                <action android:name="com.android.deskclock.action.RESET_STOPWATCH" />
232                <category android:name="android.intent.category.DEFAULT" />
233                <category android:name="android.intent.category.VOICE" />
234            </intent-filter>
235        </activity>
236
237        <receiver android:name="AlarmInitReceiver"
238                android:directBootAware="true">
239            <intent-filter>
240                <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
241                <action android:name="android.intent.action.BOOT_COMPLETED" />
242                <action android:name="android.intent.action.TIME_SET" />
243                <action android:name="android.intent.action.TIMEZONE_CHANGED" />
244                <action android:name="android.intent.action.LOCALE_CHANGED" />
245                <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
246            </intent-filter>
247        </receiver>
248
249        <receiver
250            android:name="com.android.alarmclock.AnalogAppWidgetProvider"
251            android:icon="@mipmap/ic_launcher_alarmclock"
252            android:label="@string/analog_gadget">
253            <intent-filter>
254                <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
255            </intent-filter>
256
257            <meta-data
258                android:name="android.appwidget.oldName"
259                android:value="com.android.deskclock.AnalogAppWidgetProvider"/>
260            <meta-data
261                android:name="android.appwidget.provider"
262                android:resource="@xml/analog_appwidget"/>
263        </receiver>
264
265        <receiver
266            android:name="com.android.alarmclock.DigitalAppWidgetProvider"
267            android:icon="@mipmap/ic_launcher_alarmclock"
268            android:label="@string/digital_gadget">
269            <intent-filter>
270                <action android:name="android.intent.action.TIME_SET"/>
271                <action android:name="android.intent.action.SCREEN_ON"/>
272                <action android:name="android.intent.action.DATE_CHANGED"/>
273                <action android:name="android.intent.action.LOCALE_CHANGED"/>
274                <action android:name="android.intent.action.TIMEZONE_CHANGED"/>
275                <action android:name="com.android.deskclock.DIGITAL_WIDGET_CHANGED"/>
276                <action android:name="com.android.deskclock.ON_QUARTER_HOUR"/>
277                <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
278                <action android:name="android.app.action.NEXT_ALARM_CLOCK_CHANGED"/>
279            </intent-filter>
280            <meta-data
281                android:name="android.appwidget.provider"
282                android:resource="@xml/digital_appwidget"/>
283        </receiver>
284
285        <service android:name="com.android.alarmclock.DigitalAppWidgetService"
286             android:permission="android.permission.BIND_REMOTEVIEWS"
287             android:exported="false" />
288
289        <!-- Dream (screensaver) implementation -->
290        <service android:name="Screensaver"
291            android:exported="true"
292            android:label="@string/app_label"
293            android:permission="android.permission.BIND_DREAM_SERVICE">
294            <intent-filter>
295                <action android:name="android.service.dreams.DreamService" />
296                <action android:name="android.app.action.NEXT_ALARM_CLOCK_CHANGED" />
297                <category android:name="android.intent.category.DEFAULT" />
298            </intent-filter>
299            <meta-data
300                android:name="android.service.dream"
301                android:resource="@xml/dream_info" />
302        </service>
303
304        <!-- Settings activity for screensaver -->
305        <activity android:name=".settings.ScreensaverSettingsActivity"
306                android:label="@string/screensaver_settings"
307                android:theme="@style/SettingsTheme"
308                android:taskAffinity=""
309                android:excludeFromRecents="true"
310                android:exported="true"
311                >
312            <intent-filter>
313                <action android:name="android.intent.action.MAIN" />
314            </intent-filter>
315        </activity>
316
317        <activity
318            android:name=".AlarmSelectionActivity"
319            android:label="@string/dismiss_alarm"
320            android:theme="@android:style/Theme.Holo.Light.Dialog.NoActionBar"/>
321
322        <!-- This activity displays only the timers that have expired with only a reset button
323         present. This makes the activity appropriate for display above the lock screen so that
324         users have the limited ability to silence expired timers but nothing else. -->
325        <activity android:name=".timer.ExpiredTimersActivity"
326                android:excludeFromRecents="true"
327                android:theme="@style/ExpiredTimersActivityTheme"
328                android:launchMode="singleInstance"
329                android:showOnLockScreen="true"
330                android:taskAffinity=""
331                android:configChanges="screenSize|keyboardHidden|keyboard|navigation"/>
332
333        <!-- Legacy broadcast receiver that honors old scheduled timers across app upgrade. -->
334        <receiver android:name="com.android.deskclock.timer.TimerReceiver"
335                  android:exported="false">
336            <intent-filter>
337                <action android:name="times_up" />
338            </intent-filter>
339        </receiver>
340
341        <service android:name=".timer.TimerService"
342                 android:exported="false"
343                 android:description="@string/timer_service_desc">
344        </service>
345
346        <service android:name=".stopwatch.StopwatchService"
347                android:exported="false"
348                android:description="@string/stopwatch_service_desc">
349        </service>
350    </application>
351</manifest>
352