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