1<?xml version="1.0" encoding="utf-8"?>
2<!--
3/*
4 * Copyright (c) 2014 Google Inc.
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 *     http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18-->
19<manifest xmlns:android="http://schemas.android.com/apk/res/android"
20        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
21        package="com.android.systemui"
22        android:sharedUserId="android.uid.systemui"
23        coreApp="true">
24
25    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
26    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
27    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
28    <!-- Used to read storage for all users -->
29    <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
30    <uses-permission android:name="android.permission.WAKE_LOCK" />
31
32    <uses-permission android:name="android.permission.INJECT_EVENTS" />
33    <uses-permission android:name="android.permission.DUMP" />
34    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
35
36    <uses-permission android:name="android.permission.STATUS_BAR_SERVICE" />
37    <uses-permission android:name="android.permission.STATUS_BAR" />
38    <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
39    <uses-permission android:name="android.permission.REMOTE_AUDIO_PLAYBACK" />
40
41    <uses-permission android:name="android.permission.MANAGE_USERS" />
42    <uses-permission android:name="android.permission.READ_PROFILE" />
43    <uses-permission android:name="android.permission.READ_CONTACTS" />
44    <uses-permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY" />
45    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
46    <uses-permission android:name="android.permission.GET_APP_OPS_STATS" />
47
48    <!-- Networking and telephony -->
49    <uses-permission android:name="android.permission.BLUETOOTH" />
50    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
51    <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
52    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
53    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
54    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
55    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
56    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
57    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
58    <uses-permission android:name="android.permission.OVERRIDE_WIFI_CONFIG" />
59    <uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" />
60    <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
61    <uses-permission android:name="android.permission.TETHER_PRIVILEGED" />
62    <uses-permission android:name="android.permission.READ_NETWORK_USAGE_HISTORY" />
63    <uses-permission android:name="android.permission.CONTROL_VPN" />
64    <uses-permission android:name="android.permission.PEERS_MAC_ADDRESS"/>
65    <!-- Physical hardware -->
66    <uses-permission android:name="android.permission.MANAGE_USB" />
67    <uses-permission android:name="android.permission.DEVICE_POWER" />
68    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
69    <uses-permission android:name="android.permission.MASTER_CLEAR" />
70    <uses-permission android:name="android.permission.VIBRATE" />
71
72    <!-- ActivityManager -->
73    <uses-permission android:name="android.permission.REAL_GET_TASKS" />
74    <uses-permission android:name="android.permission.GET_DETAILED_TASKS" />
75    <uses-permission android:name="android.permission.REORDER_TASKS" />
76    <uses-permission android:name="android.permission.REMOVE_TASKS" />
77    <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
78    <uses-permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" />
79    <uses-permission android:name="android.permission.START_ANY_ACTIVITY" />
80    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
81    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
82    <uses-permission android:name="android.permission.GET_TOP_ACTIVITY_INFO" />
83    <uses-permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" />
84    <uses-permission android:name="android.permission.START_TASKS_FROM_RECENTS" />
85    <uses-permission android:name="android.permission.GET_INTENT_SENDER_INTENT" />
86
87    <!-- WindowManager -->
88    <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
89    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
90    <uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
91    <uses-permission android:name="android.permission.MANAGE_APP_TOKENS" />
92    <uses-permission android:name="android.permission.REGISTER_WINDOW_MANAGER_LISTENERS" />
93    <uses-permission android:name="android.permission.SET_ORIENTATION" />
94    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
95
96    <!-- DreamManager -->
97    <uses-permission android:name="android.permission.READ_DREAM_STATE" />
98    <uses-permission android:name="android.permission.WRITE_DREAM_STATE" />
99
100    <!-- Alarm clocks -->
101    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
102
103    <!-- Keyguard -->
104    <uses-permission android:name="android.permission.CONTROL_KEYGUARD" />
105    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
106    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
107    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
108    <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />
109    <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
110    <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
111    <uses-permission android:name="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" />
112    <uses-permission android:name="android.permission.TRUST_LISTENER" />
113    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
114    <uses-permission android:name="android.permission.RESET_FINGERPRINT_LOCKOUT" />
115
116    <!-- Needed for WallpaperManager.clear in ImageWallpaper.updateWallpaperLocked -->
117    <uses-permission android:name="android.permission.SET_WALLPAPER"/>
118
119    <!-- Recents -->
120    <uses-permission android:name="android.permission.BIND_APPWIDGET" />
121
122    <!-- Wifi Display -->
123    <uses-permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY" />
124
125    <uses-permission android:name="android.permission.CAMERA" />
126
127    <!-- Screen Capturing -->
128    <uses-permission android:name="android.permission.MANAGE_MEDIA_PROJECTION" />
129
130    <!-- Assist -->
131    <uses-permission android:name="android.permission.ACCESS_VOICE_INTERACTION_SERVICE" />
132
133    <!-- Listen for keyboard attachment / detachment -->
134    <uses-permission android:name="android.permission.TABLET_MODE" />
135
136    <!-- Self permission for internal broadcasts. -->
137    <permission android:name="com.android.systemui.permission.SELF"
138            android:protectionLevel="signature" />
139    <uses-permission android:name="com.android.systemui.permission.SELF" />
140
141    <!-- Adding Quick Settings tiles -->
142    <uses-permission android:name="android.permission.BIND_QUICK_SETTINGS_TILE" />
143
144    <!-- Block notifications inline notifications -->
145    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
146
147    <!-- Access battery information -->
148    <uses-permission android:name="android.permission.BATTERY_STATS" />
149
150    <!-- DevicePolicyManager get user restrictions -->
151    <uses-permission android:name="android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" />
152
153    <!-- Needed for passing extras with intent ACTION_SHOW_ADMIN_SUPPORT_DETAILS -->
154    <uses-permission android:name="android.permission.MANAGE_DEVICE_ADMINS" />
155
156    <!-- TV picture-in-picture -->
157    <uses-permission android:name="android.permission.RECEIVE_MEDIA_RESOURCE_USAGE" />
158
159    <!-- DND access -->
160    <uses-permission android:name="android.permission.MANAGE_NOTIFICATIONS" />
161
162    <!-- It's like, reality, but, you know, virtual -->
163    <uses-permission android:name="android.permission.ACCESS_VR_MANAGER" />
164
165    <!-- the ability to rename notifications posted by other apps -->
166    <uses-permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME" />
167
168    <application
169        android:name=".SystemUIApplication"
170        android:persistent="true"
171        android:allowClearUserData="false"
172        android:allowBackup="false"
173        android:hardwareAccelerated="true"
174        android:label="@string/app_label"
175        android:icon="@drawable/icon"
176        android:process="com.android.systemui"
177        android:supportsRtl="true"
178        android:theme="@style/systemui_theme"
179        android:defaultToDeviceProtectedStorage="true"
180        android:directBootAware="true">
181        <!-- Keep theme in sync with SystemUIApplication.onCreate().
182             Setting the theme on the application does not affect views inflated by services.
183             The application theme is set again from onCreate to take effect for those views. -->
184
185        <!-- Broadcast receiver that gets the broadcast at boot time and starts
186             up everything else.
187             TODO: Should have an android:permission attribute
188             -->
189        <service android:name="SystemUIService"
190            android:exported="true"
191            />
192
193        <!-- Recents depends on every user having their own SystemUI process, so on user switch,
194             ensure that the process is created by starting this service.
195             -->
196        <service android:name="SystemUISecondaryUserService"
197            android:exported="true"
198            android:permission="com.android.systemui.permission.SELF" />
199
200
201        <!-- started from PhoneWindowManager
202             TODO: Should have an android:permission attribute -->
203        <service android:name=".screenshot.TakeScreenshotService"
204            android:process=":screenshot"
205            android:exported="false" />
206
207        <!-- Called from PhoneWindowManager -->
208        <receiver android:name=".screenshot.ScreenshotServiceErrorReceiver"
209            android:process=":screenshot"
210            android:exported="false">
211            <intent-filter>
212                <action android:name="com.android.systemui.screenshot.SHOW_ERROR" />
213            </intent-filter>
214        </receiver>
215
216        <service android:name=".LoadAverageService"
217                android:exported="true" />
218
219        <service android:name=".ImageWallpaper"
220                android:permission="android.permission.BIND_WALLPAPER"
221                android:exported="true" />
222
223        <receiver android:name=".BootReceiver" androidprv:systemUserOnly="true">
224            <intent-filter android:priority="1000">
225                <action android:name="android.intent.action.BOOT_COMPLETED" />
226            </intent-filter>
227        </receiver>
228
229        <activity android:name=".tuner.TunerActivity"
230                  android:enabled="false"
231                  android:icon="@drawable/tuner"
232                  android:theme="@style/TunerSettings"
233                  android:label="@string/system_ui_tuner"
234                  android:process=":tuner"
235                  android:exported="true">
236            <intent-filter>
237                <action android:name="com.android.settings.action.EXTRA_SETTINGS" />
238                <category android:name="android.intent.category.DEFAULT" />
239            </intent-filter>
240            <meta-data android:name="com.android.settings.category"
241                    android:value="com.android.settings.category.system" />
242        </activity>
243
244        <activity-alias android:name=".DemoMode"
245                  android:targetActivity=".tuner.TunerActivity"
246                  android:icon="@drawable/tuner"
247                  android:theme="@style/TunerSettings"
248                  android:label="@string/demo_mode"
249                  android:process=":tuner"
250                  android:exported="true">
251            <intent-filter>
252                <action android:name="com.android.settings.action.DEMO_MODE" />
253                <category android:name="android.intent.category.DEFAULT" />
254            </intent-filter>
255        </activity-alias>
256
257        <!-- Service used by secondary users to register themselves with the system user. -->
258        <service android:name=".recents.RecentsSystemUserService"
259            android:exported="false"
260            android:permission="com.android.systemui.permission.SELF" />
261
262        <!-- Alternate Recents -->
263        <activity android:name=".recents.RecentsActivity"
264                  android:label="@string/accessibility_desc_recent_apps"
265                  android:exported="false"
266                  android:launchMode="singleInstance"
267                  android:excludeFromRecents="true"
268                  android:stateNotNeeded="true"
269                  android:resumeWhilePausing="true"
270                  android:screenOrientation="behind"
271                  android:resizeableActivity="true"
272                  android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout"
273                  android:theme="@style/RecentsTheme.Wallpaper">
274            <intent-filter>
275                <action android:name="com.android.systemui.recents.TOGGLE_RECENTS" />
276            </intent-filter>
277        </activity>
278
279        <activity android:name=".recents.tv.RecentsTvActivity"
280                  android:label="@string/accessibility_desc_recent_apps"
281                  android:exported="false"
282                  android:launchMode="singleInstance"
283                  android:excludeFromRecents="true"
284                  android:stateNotNeeded="true"
285                  android:resumeWhilePausing="true"
286                  android:screenOrientation="behind"
287                  android:theme="@style/RecentsTvTheme.Wallpaper">
288            <intent-filter>
289                <action android:name="com.android.systemui.recents.TOGGLE_RECENTS" />
290            </intent-filter>
291        </activity>
292
293        <activity
294            android:name=".stackdivider.ForcedResizableInfoActivity"
295            android:theme="@style/ForcedResizableTheme"
296            android:excludeFromRecents="true"
297            android:stateNotNeeded="true"
298            android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout"
299            android:exported="false">
300        </activity>
301
302        <!-- Callback for dismissing screenshot notification after a share target is picked -->
303        <receiver android:name=".screenshot.GlobalScreenshot$TargetChosenReceiver"
304                  android:process=":screenshot"
305                  android:exported="false" />
306
307        <!-- Callback for deleting screenshot notification -->
308        <receiver android:name=".screenshot.GlobalScreenshot$DeleteScreenshotReceiver"
309                  android:process=":screenshot"
310                  android:exported="false" />
311
312        <!-- started from UsbDeviceSettingsManager -->
313        <activity android:name=".usb.UsbConfirmActivity"
314            android:exported="true"
315            android:permission="android.permission.MANAGE_USB"
316            android:theme="@style/Theme.SystemUI.Dialog.Alert"
317            android:finishOnCloseSystemDialogs="true"
318            android:excludeFromRecents="true">
319        </activity>
320
321        <!-- started from UsbDeviceSettingsManager -->
322        <activity android:name=".usb.UsbPermissionActivity"
323            android:exported="true"
324            android:permission="android.permission.MANAGE_USB"
325            android:theme="@style/Theme.SystemUI.Dialog.Alert"
326            android:finishOnCloseSystemDialogs="true"
327            android:excludeFromRecents="true">
328        </activity>
329
330        <!-- started from UsbDeviceSettingsManager -->
331        <activity android:name=".usb.UsbResolverActivity"
332            android:exported="true"
333            android:permission="android.permission.MANAGE_USB"
334            android:theme="@style/Theme.SystemUI.Dialog.Alert"
335            android:finishOnCloseSystemDialogs="true"
336            android:excludeFromRecents="true">
337        </activity>
338
339        <!-- started from UsbDeviceSettingsManager -->
340        <activity android:name=".usb.UsbAccessoryUriActivity"
341            android:exported="true"
342            android:permission="android.permission.MANAGE_USB"
343            android:theme="@style/Theme.SystemUI.Dialog.Alert"
344            android:finishOnCloseSystemDialogs="true"
345            android:excludeFromRecents="true">
346        </activity>
347
348        <!-- started from UsbDebuggingManager -->
349        <activity android:name=".usb.UsbDebuggingActivity"
350            android:permission="android.permission.MANAGE_USB"
351            android:theme="@style/Theme.SystemUI.Dialog.Alert"
352            android:finishOnCloseSystemDialogs="true"
353            android:excludeFromRecents="true">
354        </activity>
355        <activity android:name=".usb.UsbDebuggingSecondaryUserActivity"
356            android:theme="@style/Theme.SystemUI.Dialog.Alert"
357            android:finishOnCloseSystemDialogs="true"
358            android:excludeFromRecents="true">
359        </activity>
360
361        <!-- started from NetworkPolicyManagerService -->
362        <activity
363            android:name=".net.NetworkOverLimitActivity"
364            android:exported="true"
365            android:permission="android.permission.MANAGE_NETWORK_POLICY"
366            android:theme="@android:style/Theme.DeviceDefault.Light.Panel"
367            android:finishOnCloseSystemDialogs="true"
368            android:launchMode="singleTop"
369            android:taskAffinity="com.android.systemui.net"
370            android:excludeFromRecents="true" />
371
372        <!-- started from MediaProjectionManager -->
373        <activity
374            android:name=".media.MediaProjectionPermissionActivity"
375            android:exported="true"
376            android:theme="@style/Theme.AlertDialogHost"
377            android:finishOnCloseSystemDialogs="true"
378            android:launchMode="singleTop"
379            android:excludeFromRecents="true" />
380
381        <!-- started from PipUI -->
382        <activity
383            android:name="com.android.systemui.tv.pip.PipMenuActivity"
384            android:exported="true"
385            android:theme="@style/PipTheme"
386            android:launchMode="singleTop"
387            android:taskAffinity=""
388            android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
389            android:resizeableActivity="true"
390            android:supportsPictureInPicture="true"
391            androidprv:alwaysFocusable="true"
392            android:excludeFromRecents="true" />
393        <activity
394            android:name="com.android.systemui.tv.pip.PipOverlayActivity"
395            android:exported="true"
396            android:theme="@style/PipTheme"
397            android:taskAffinity=""
398            android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
399            android:resizeableActivity="true"
400            android:supportsPictureInPicture="true"
401            android:excludeFromRecents="true" />
402        <activity
403            android:name="com.android.systemui.tv.pip.PipOnboardingActivity"
404            android:exported="true"
405            android:theme="@style/PipTheme"
406            android:launchMode="singleTop"
407            android:excludeFromRecents="true" />
408
409        <!-- platform logo easter egg activity -->
410        <activity
411            android:name=".DessertCase"
412            android:exported="true"
413            android:label="@string/dessert_case"
414            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
415            android:hardwareAccelerated="true"
416            android:launchMode="singleInstance"
417            android:screenOrientation="locked"
418            android:process=":sweetsweetdesserts"
419            android:excludeFromRecents="true">
420            <intent-filter>
421                <action android:name="android.intent.action.MAIN" />
422                <category android:name="android.intent.category.DEFAULT" />
423            </intent-filter>
424        </activity>
425
426        <activity android:name=".egg.MLandActivity"
427                  android:theme="@android:style/Theme.Material.NoActionBar"
428                  android:exported="true"
429                  android:icon="@drawable/icon"
430                  android:label="@string/mland"
431                  android:hardwareAccelerated="true"
432                  android:launchMode="singleInstance"
433                  android:screenOrientation="locked"
434                  android:process=":sweetsweetdesserts"
435                  android:excludeFromRecents="true">
436            <intent-filter>
437                <action android:name="android.intent.action.MAIN"/>
438                <category android:name="android.intent.category.DEFAULT" />
439            </intent-filter>
440        </activity>
441
442        <!-- a gallery of delicious treats -->
443        <service
444            android:name=".DessertCaseDream"
445            android:exported="true"
446            android:label="@string/dessert_case"
447            android:permission="android.permission.BIND_DREAM_SERVICE"
448            android:enabled="false"
449            android:process=":sweetsweetdesserts"
450            >
451            <intent-filter>
452                <action android:name="android.service.dreams.DreamService" />
453                <category android:name="android.intent.category.DEFAULT" />
454            </intent-filter>
455        </service>
456
457        <service
458            android:name=".keyguard.KeyguardService"
459            android:exported="true"
460            android:enabled="@bool/config_enableKeyguardService" />
461
462        <activity android:name=".Somnambulator"
463            android:label="@string/start_dreams"
464            android:icon="@mipmap/ic_launcher_dreams"
465            android:theme="@android:style/Theme.Wallpaper.NoTitleBar"
466            android:exported="true"
467            android:excludeFromRecents="true"
468            >
469            <!--
470            <intent-filter>
471                <action android:name="android.intent.action.CREATE_SHORTCUT" />
472                <category android:name="android.intent.category.DEFAULT" />
473            </intent-filter>
474            -->
475            <intent-filter>
476                <action android:name="android.intent.action.MAIN" />
477                <category android:name="android.intent.category.DEFAULT" />
478                <category android:name="android.intent.category.DESK_DOCK" />
479            </intent-filter>
480        </activity>
481
482        <activity
483            android:name=".settings.BrightnessDialog"
484            android:label="@string/quick_settings_brightness_dialog_title"
485            android:theme="@android:style/Theme.DeviceDefault.Dialog"
486            android:finishOnCloseSystemDialogs="true"
487            android:launchMode="singleInstance"
488            android:excludeFromRecents="true"
489            android:exported="true">
490            <intent-filter>
491                <action android:name="android.intent.action.SHOW_BRIGHTNESS_DIALOG" />
492                <category android:name="android.intent.category.DEFAULT" />
493            </intent-filter>
494        </activity>
495
496        <!-- Doze with notifications, run in main sysui process for every user  -->
497        <service
498            android:name=".doze.DozeService"
499            android:exported="true"
500            android:singleUser="true"
501            android:permission="android.permission.BIND_DREAM_SERVICE" />
502
503        <receiver
504            android:name=".tuner.TunerService$ClearReceiver"
505            android:exported="false">
506            <intent-filter>
507                <action android:name="com.android.systemui.action.CLEAR_TUNER" />
508            </intent-filter>
509        </receiver>
510
511        <receiver
512            android:name=".statusbar.KeyboardShortcutsReceiver">
513            <intent-filter>
514                <action android:name="android.intent.action.DISMISS_KEYBOARD_SHORTCUTS" />
515                <action android:name="android.intent.action.SHOW_KEYBOARD_SHORTCUTS" />
516            </intent-filter>
517        </receiver>
518    </application>
519</manifest>
520