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