1<?xml version="1.0" encoding="utf-8"?>
2<!--
3  Copyright (C) 2016 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
19    xmlns:android="http://schemas.android.com/apk/res/android"
20    package="com.android.deskclock">
21
22    <original-package android:name="com.android.alarmclock" />
23    <original-package android:name="com.android.deskclock" />
24
25    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="30" />
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    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
32    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
33    <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
34    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
35    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
36    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
37
38    <application
39        android:name=".DeskClockApplication"
40        android:allowBackup="false"
41        android:backupAgent="DeskClockBackupAgent"
42        android:fullBackupContent="@xml/backup_scheme"
43        android:fullBackupOnly="true"
44        android:icon="@mipmap/ic_launcher_alarmclock"
45        android:label="@string/app_label"
46        android:requiredForAllUsers="true"
47        android:supportsRtl="true"
48        android:theme="@style/Theme.DeskClock">
49
50        <!-- ============================================================== -->
51        <!-- Main app components.                                           -->
52        <!-- ============================================================== -->
53
54        <activity
55            android:name=".DeskClock"
56            android:label="@string/app_label"
57            android:launchMode="singleTask"
58            android:exported="true"
59            android:windowSoftInputMode="adjustPan">
60            <intent-filter>
61                <action android:name="android.intent.action.MAIN" />
62
63                <category android:name="android.intent.category.DEFAULT" />
64                <category android:name="android.intent.category.LAUNCHER" />
65            </intent-filter>
66        </activity>
67
68        <activity
69            android:name=".ringtone.RingtonePickerActivity"
70            android:excludeFromRecents="true"
71            android:taskAffinity=""
72            android:theme="@style/Theme.DeskClock.RingtonePicker" />
73
74        <activity
75            android:name=".worldclock.CitySelectionActivity"
76            android:excludeFromRecents="true"
77            android:label="@string/cities_activity_title"
78            android:parentActivityName=".DeskClock"
79            android:taskAffinity=""
80            android:theme="@style/Theme.DeskClock.CitySelection" />
81
82        <activity
83            android:name=".settings.SettingsActivity"
84            android:excludeFromRecents="true"
85            android:label="@string/settings"
86            android:parentActivityName=".DeskClock"
87            android:taskAffinity=""
88            android:theme="@style/Theme.DeskClock.Settings" />
89
90        <activity
91            android:name=".HandleShortcuts"
92            android:excludeFromRecents="true"
93            android:launchMode="singleInstance"
94            android:taskAffinity=""
95            android:theme="@android:style/Theme.NoDisplay" />
96
97        <!-- ============================================================== -->
98        <!-- AlarmClock API components.                                     -->
99        <!-- ============================================================== -->
100
101        <activity
102            android:name="com.android.deskclock.HandleApiCalls"
103            android:permission="com.android.alarm.permission.SET_ALARM"
104            android:directBootAware="true"
105            android:excludeFromRecents="true"
106            android:launchMode="singleInstance"
107            android:showWhenLocked="true"
108            android:taskAffinity=""
109            android:exported="true"
110            android:theme="@android:style/Theme.NoDisplay">
111            <intent-filter>
112                <action android:name="android.intent.action.DISMISS_ALARM" />
113                <action android:name="android.intent.action.DISMISS_TIMER" />
114                <action android:name="android.intent.action.SHOW_ALARMS" />
115                <action android:name="android.intent.action.SHOW_TIMERS" />
116                <action android:name="android.intent.action.SNOOZE_ALARM" />
117
118                <category android:name="android.intent.category.DEFAULT" />
119                <category android:name="android.intent.category.VOICE" />
120            </intent-filter>
121        </activity>
122
123        <activity-alias
124            android:name="com.android.deskclock.HandleSetAlarmApiCalls"
125            android:permission="com.android.alarm.permission.SET_ALARM"
126            android:exported="true"
127            android:targetActivity="com.android.deskclock.HandleApiCalls">
128            <intent-filter>
129                <action android:name="android.intent.action.SET_ALARM" />
130                <action android:name="android.intent.action.SET_TIMER" />
131
132                <category android:name="android.intent.category.DEFAULT" />
133                <category android:name="android.intent.category.VOICE" />
134            </intent-filter>
135        </activity-alias>
136
137        <!-- ============================================================== -->
138        <!-- Alarm components.                                              -->
139        <!-- ============================================================== -->
140
141        <activity
142            android:name=".alarms.AlarmActivity"
143            android:directBootAware="true"
144            android:excludeFromRecents="true"
145            android:resizeableActivity="false"
146            android:showOnLockScreen="true"
147	    android:showWhenLocked="true"
148            android:taskAffinity=""
149            android:windowSoftInputMode="stateAlwaysHidden" />
150
151        <activity
152            android:name=".AlarmSelectionActivity"
153            android:label="@string/dismiss_alarm"
154            android:theme="@android:style/Theme.Holo.Light.Dialog.NoActionBar" />
155
156        <provider
157            android:name=".provider.ClockProvider"
158            android:authorities="com.android.deskclock"
159            android:directBootAware="true"
160            android:exported="false" />
161
162        <receiver
163            android:name=".AlarmInitReceiver"
164            android:exported="true"
165            android:directBootAware="true">
166            <intent-filter>
167                <action android:name="android.intent.action.BOOT_COMPLETED" />
168                <action android:name="android.intent.action.LOCALE_CHANGED" />
169                <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
170                <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
171                <action android:name="android.intent.action.TIME_SET" />
172                <action android:name="android.intent.action.TIMEZONE_CHANGED" />
173            </intent-filter>
174        </receiver>
175
176        <receiver
177            android:name=".alarms.AlarmStateManager"
178            android:directBootAware="true" />
179
180        <service
181            android:name=".alarms.AlarmService"
182            android:directBootAware="true" />
183
184        <!-- ============================================================== -->
185        <!-- Timer components.                                              -->
186        <!-- ============================================================== -->
187
188        <activity
189            android:name=".timer.ExpiredTimersActivity"
190            android:configChanges="screenSize|keyboardHidden|keyboard|navigation"
191            android:directBootAware="true"
192            android:excludeFromRecents="true"
193            android:launchMode="singleInstance"
194            android:resizeableActivity="false"
195            android:showOnLockScreen="true"
196            android:taskAffinity="" />
197
198        <!-- Legacy broadcast receiver that honors old scheduled timers across app upgrade. -->
199        <receiver
200            android:name="com.android.deskclock.timer.TimerReceiver"
201            android:exported="false">
202            <intent-filter>
203                <action android:name="times_up" />
204            </intent-filter>
205        </receiver>
206
207        <service
208            android:name=".timer.TimerService"
209            android:description="@string/timer_service_desc"
210            android:directBootAware="true" />
211
212        <!-- ============================================================== -->
213        <!-- Stopwatch components.                                          -->
214        <!-- ============================================================== -->
215
216        <service
217            android:name=".stopwatch.StopwatchService"
218            android:description="@string/stopwatch_service_desc"
219            android:directBootAware="true" />
220
221
222        <!-- ============================================================== -->
223        <!-- Screen saver components.                                       -->
224        <!-- ============================================================== -->
225
226        <activity
227            android:name=".ScreensaverActivity"
228            android:excludeFromRecents="true"
229            android:resizeableActivity="false"
230            android:taskAffinity="" />
231
232        <activity
233            android:name=".settings.ScreensaverSettingsActivity"
234            android:excludeFromRecents="true"
235            android:label="@string/screensaver_settings"
236            android:taskAffinity=""
237            android:theme="@style/Theme.DeskClock.Settings" />
238
239        <service
240            android:name=".Screensaver"
241            android:label="@string/app_label"
242            android:exported="true"
243            android:permission="android.permission.BIND_DREAM_SERVICE">
244            <intent-filter>
245                <action android:name="android.service.dreams.DreamService" />
246                <action android:name="android.app.action.NEXT_ALARM_CLOCK_CHANGED" />
247
248                <category android:name="android.intent.category.DEFAULT" />
249            </intent-filter>
250            <meta-data
251                android:name="android.service.dream"
252                android:resource="@xml/screensaver_info" />
253        </service>
254
255        <!-- ============================================================== -->
256        <!-- App widget components.                                         -->
257        <!-- ============================================================== -->
258
259        <receiver
260            android:name="com.android.alarmclock.AnalogAppWidgetProvider"
261            android:exported="true"
262            android:label="@string/analog_gadget">
263            <intent-filter>
264                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
265            </intent-filter>
266
267            <meta-data
268                android:name="android.appwidget.oldName"
269                android:value="com.android.deskclock.AnalogAppWidgetProvider" />
270            <meta-data
271                android:name="android.appwidget.provider"
272                android:resource="@xml/analog_appwidget" />
273        </receiver>
274
275        <receiver
276            android:name="com.android.alarmclock.DigitalAppWidgetProvider"
277            android:exported="true"
278            android:label="@string/digital_gadget">
279            <intent-filter>
280                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
281                <action android:name="android.app.action.NEXT_ALARM_CLOCK_CHANGED" />
282                <action android:name="android.intent.action.DATE_CHANGED" />
283                <action android:name="android.intent.action.LOCALE_CHANGED" />
284                <action android:name="android.intent.action.SCREEN_ON" />
285                <action android:name="android.intent.action.TIME_SET" />
286                <action android:name="android.intent.action.TIMEZONE_CHANGED" />
287                <action android:name="com.android.deskclock.ALARM_CHANGED" />
288                <action android:name="com.android.deskclock.ON_DAY_CHANGE" />
289                <action android:name="com.android.deskclock.WORLD_CITIES_CHANGED" />
290            </intent-filter>
291            <meta-data
292                android:name="android.appwidget.provider"
293                android:resource="@xml/digital_appwidget" />
294        </receiver>
295
296        <service
297            android:name="com.android.alarmclock.DigitalAppWidgetCityService"
298            android:permission="android.permission.BIND_REMOTEVIEWS" />
299
300    </application>
301</manifest>
302