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.READ_NETWORK_USAGE_HISTORY" />
62    <uses-permission android:name="android.permission.CONTROL_VPN" />
63    <uses-permission android:name="android.permission.PEERS_MAC_ADDRESS"/>
64    <!-- Physical hardware -->
65    <uses-permission android:name="android.permission.MANAGE_USB" />
66    <uses-permission android:name="android.permission.DEVICE_POWER" />
67    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
68    <uses-permission android:name="android.permission.MASTER_CLEAR" />
69    <uses-permission android:name="android.permission.VIBRATE" />
70
71    <!-- ActivityManager -->
72    <uses-permission android:name="android.permission.REAL_GET_TASKS" />
73    <uses-permission android:name="android.permission.GET_DETAILED_TASKS" />
74    <uses-permission android:name="android.permission.REORDER_TASKS" />
75    <uses-permission android:name="android.permission.REMOVE_TASKS" />
76    <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
77    <uses-permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" />
78    <uses-permission android:name="android.permission.START_ANY_ACTIVITY" />
79    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
80    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
81    <uses-permission android:name="android.permission.GET_TOP_ACTIVITY_INFO" />
82    <uses-permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" />
83    <uses-permission android:name="android.permission.START_TASKS_FROM_RECENTS" />
84
85    <!-- WindowManager -->
86    <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
87    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
88    <uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
89    <uses-permission android:name="android.permission.MANAGE_APP_TOKENS" />
90    <uses-permission android:name="android.permission.SET_ORIENTATION" />
91    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
92
93    <!-- DreamManager -->
94    <uses-permission android:name="android.permission.READ_DREAM_STATE" />
95    <uses-permission android:name="android.permission.WRITE_DREAM_STATE" />
96
97    <!-- Alarm clocks -->
98    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
99
100    <!-- Keyguard -->
101    <uses-permission android:name="android.permission.CONTROL_KEYGUARD" />
102    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
103    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
104    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
105    <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />
106    <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
107    <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
108    <uses-permission android:name="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" />
109    <uses-permission android:name="android.permission.TRUST_LISTENER" />
110    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
111
112    <!-- Needed for WallpaperManager.clear in ImageWallpaper.updateWallpaperLocked -->
113    <uses-permission android:name="android.permission.SET_WALLPAPER"/>
114
115    <!-- Recents -->
116    <uses-permission android:name="android.permission.BIND_APPWIDGET" />
117
118    <!-- Wifi Display -->
119    <uses-permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY" />
120
121    <uses-permission android:name="android.permission.CAMERA" />
122
123    <!-- Screen Capturing -->
124    <uses-permission android:name="android.permission.MANAGE_MEDIA_PROJECTION" />
125
126    <!-- Assist -->
127    <uses-permission android:name="android.permission.ACCESS_VOICE_INTERACTION_SERVICE" />
128
129    <!-- Self permission for internal broadcasts. -->
130    <permission android:name="com.android.systemui.permission.SELF"
131            android:protectionLevel="signature" />
132    <uses-permission android:name="com.android.systemui.permission.SELF" />
133
134    <application
135        android:name=".SystemUIApplication"
136        android:persistent="true"
137        android:allowClearUserData="false"
138        android:allowBackup="false"
139        android:hardwareAccelerated="true"
140        android:label="@string/app_label"
141        android:icon="@drawable/icon"
142        android:process="com.android.systemui"
143        android:supportsRtl="true"
144        android:theme="@style/systemui_theme">
145        <!-- Keep theme in sync with SystemUIApplication.onCreate().
146             Setting the theme on the application does not affect views inflated by services.
147             The application theme is set again from onCreate to take effect for those views. -->
148
149        <!-- Broadcast receiver that gets the broadcast at boot time and starts
150             up everything else.
151             TODO: Should have an android:permission attribute
152             -->
153        <service android:name="SystemUIService"
154            android:exported="true"
155            />
156
157        <!-- started from PhoneWindowManager
158             TODO: Should have an android:permission attribute -->
159        <service android:name=".screenshot.TakeScreenshotService"
160            android:process=":screenshot"
161            android:exported="false" />
162
163        <service android:name=".LoadAverageService"
164                android:exported="true" />
165
166        <service android:name=".ImageWallpaper"
167                android:permission="android.permission.BIND_WALLPAPER"
168                android:exported="true" />
169
170        <receiver android:name=".BootReceiver" androidprv:primaryUserOnly="true">
171            <intent-filter android:priority="1000">
172                <action android:name="android.intent.action.BOOT_COMPLETED" />
173            </intent-filter>
174        </receiver>
175
176        <receiver android:name=".qs.tiles.HotspotTile$APChangedReceiver"
177                androidprv:primaryUserOnly="true">
178            <intent-filter>
179                <action android:name="android.net.wifi.WIFI_AP_STATE_CHANGED" />
180            </intent-filter>
181        </receiver>
182
183        <activity android:name=".usb.UsbStorageActivity"
184                  android:label="@*android:string/usb_storage_activity_title"
185                  android:excludeFromRecents="true">
186        </activity>
187
188        <activity android:name=".tuner.TunerActivity"
189                  android:enabled="false"
190                  android:icon="@drawable/tuner"
191                  android:theme="@android:style/Theme.Material.Settings"
192                  android:label="@string/system_ui_tuner"
193                  android:process=":tuner"
194                  android:exported="true">
195            <intent-filter>
196                <action android:name="com.android.settings.action.EXTRA_SETTINGS" />
197                <category android:name="android.intent.category.DEFAULT" />
198            </intent-filter>
199            <meta-data android:name="com.android.settings.category"
200                    android:value="com.android.settings.category.system" />
201        </activity>
202
203        <!-- Alternate Recents -->
204        <activity android:name=".recents.RecentsActivity"
205                  android:label="@string/accessibility_desc_recent_apps"
206                  android:exported="false"
207                  android:launchMode="singleInstance"
208                  android:excludeFromRecents="true"
209                  android:stateNotNeeded="true"
210                  android:resumeWhilePausing="true"
211                  android:screenOrientation="behind"
212                  android:theme="@style/config_recents_activity_theme">
213            <intent-filter>
214                <action android:name="com.android.systemui.recents.TOGGLE_RECENTS" />
215            </intent-filter>
216        </activity>
217
218        <receiver android:name=".recents.RecentsUserEventProxyReceiver"
219                  android:exported="false">
220            <intent-filter>
221                <action android:name="com.android.systemui.recents.action.SHOW_RECENTS_FOR_USER" />
222                <action android:name="com.android.systemui.recents.action.HIDE_RECENTS_FOR_USER" />
223                <action android:name="com.android.systemui.recents.action.TOGGLE_RECENTS_FOR_USER" />
224                <action android:name="com.android.systemui.recents.action.PRELOAD_RECENTS_FOR_USER" />
225                <action android:name="com.android.systemui.recents.action.CONFIG_CHANGED_FOR_USER" />
226            </intent-filter>
227        </receiver>
228
229        <!-- Callback for dismissing screenshot notification after a share target is picked -->
230        <receiver android:name=".screenshot.GlobalScreenshot$TargetChosenReceiver"
231                  android:process=":screenshot"
232                  android:exported="false" />
233
234        <!-- Callback for deleting screenshot notification -->
235        <receiver android:name=".screenshot.GlobalScreenshot$DeleteScreenshotReceiver"
236                  android:process=":screenshot"
237                  android:exported="false" />
238
239        <!-- started from UsbDeviceSettingsManager -->
240        <activity android:name=".usb.UsbConfirmActivity"
241            android:exported="true"
242            android:permission="android.permission.MANAGE_USB"
243            android:theme="@style/Theme.SystemUI.Dialog.Alert"
244            android:finishOnCloseSystemDialogs="true"
245            android:excludeFromRecents="true">
246        </activity>
247
248        <!-- started from UsbDeviceSettingsManager -->
249        <activity android:name=".usb.UsbPermissionActivity"
250            android:exported="true"
251            android:permission="android.permission.MANAGE_USB"
252            android:theme="@style/Theme.SystemUI.Dialog.Alert"
253            android:finishOnCloseSystemDialogs="true"
254            android:excludeFromRecents="true">
255        </activity>
256
257        <!-- started from UsbDeviceSettingsManager -->
258        <activity android:name=".usb.UsbResolverActivity"
259            android:exported="true"
260            android:permission="android.permission.MANAGE_USB"
261            android:theme="@style/Theme.SystemUI.Dialog.Alert"
262            android:finishOnCloseSystemDialogs="true"
263            android:excludeFromRecents="true">
264        </activity>
265
266        <!-- started from UsbDeviceSettingsManager -->
267        <activity android:name=".usb.UsbAccessoryUriActivity"
268            android:exported="true"
269            android:permission="android.permission.MANAGE_USB"
270            android:theme="@style/Theme.SystemUI.Dialog.Alert"
271            android:finishOnCloseSystemDialogs="true"
272            android:excludeFromRecents="true">
273        </activity>
274
275        <!-- started from UsbDebuggingManager -->
276        <activity android:name=".usb.UsbDebuggingActivity"
277            android:permission="android.permission.MANAGE_USB"
278            android:theme="@style/Theme.SystemUI.Dialog.Alert"
279            android:finishOnCloseSystemDialogs="true"
280            android:excludeFromRecents="true">
281        </activity>
282        <activity android:name=".usb.UsbDebuggingSecondaryUserActivity"
283            android:theme="@style/Theme.SystemUI.Dialog.Alert"
284            android:finishOnCloseSystemDialogs="true"
285            android:excludeFromRecents="true">
286        </activity>
287
288        <!-- started from NetworkPolicyManagerService -->
289        <activity
290            android:name=".net.NetworkOverLimitActivity"
291            android:exported="true"
292            android:permission="android.permission.MANAGE_NETWORK_POLICY"
293            android:theme="@android:style/Theme.DeviceDefault.Light.Panel"
294            android:finishOnCloseSystemDialogs="true"
295            android:launchMode="singleTop"
296            android:taskAffinity="com.android.systemui.net"
297            android:excludeFromRecents="true" />
298
299        <!-- started from MediaProjectionManager -->
300        <activity
301            android:name=".media.MediaProjectionPermissionActivity"
302            android:exported="true"
303            android:theme="@style/Theme.AlertDialogHost"
304            android:finishOnCloseSystemDialogs="true"
305            android:launchMode="singleTop"
306            android:excludeFromRecents="true" />
307
308        <!-- platform logo easter egg activity -->
309        <activity
310            android:name=".DessertCase"
311            android:exported="true"
312            android:label="@string/dessert_case"
313            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
314            android:hardwareAccelerated="true"
315            android:launchMode="singleInstance"
316            android:screenOrientation="locked"
317            android:process=":sweetsweetdesserts"
318            android:excludeFromRecents="true">
319            <intent-filter>
320                <action android:name="android.intent.action.MAIN" />
321                <category android:name="android.intent.category.DEFAULT" />
322            </intent-filter>
323        </activity>
324
325        <activity android:name=".egg.MLandActivity"
326                  android:theme="@android:style/Theme.Material.NoActionBar"
327                  android:exported="true"
328                  android:icon="@drawable/icon"
329                  android:label="@string/mland"
330                  android:hardwareAccelerated="true"
331                  android:launchMode="singleInstance"
332                  android:screenOrientation="locked"
333                  android:process=":sweetsweetdesserts"
334                  android:excludeFromRecents="true">
335            <intent-filter>
336                <action android:name="android.intent.action.MAIN"/>
337                <category android:name="android.intent.category.DEFAULT" />
338                <category android:name="com.android.internal.category.PLATLOGO" />
339            </intent-filter>
340        </activity>
341
342        <!-- a gallery of delicious treats -->
343        <service
344            android:name=".DessertCaseDream"
345            android:exported="true"
346            android:label="@string/dessert_case"
347            android:permission="android.permission.BIND_DREAM_SERVICE"
348            android:enabled="false"
349            android:process=":sweetsweetdesserts"
350            >
351            <intent-filter>
352                <action android:name="android.service.dreams.DreamService" />
353                <category android:name="android.intent.category.DEFAULT" />
354            </intent-filter>
355        </service>
356
357        <service
358            android:name=".keyguard.KeyguardService"
359            android:exported="true"
360            android:enabled="@bool/config_enableKeyguardService" />
361
362        <activity android:name=".Somnambulator"
363            android:label="@string/start_dreams"
364            android:icon="@mipmap/ic_launcher_dreams"
365            android:theme="@android:style/Theme.Wallpaper.NoTitleBar"
366            android:exported="true"
367            android:excludeFromRecents="true"
368            >
369            <!--
370            <intent-filter>
371                <action android:name="android.intent.action.CREATE_SHORTCUT" />
372                <category android:name="android.intent.category.DEFAULT" />
373            </intent-filter>
374            -->
375            <intent-filter>
376                <action android:name="android.intent.action.MAIN" />
377                <category android:name="android.intent.category.DEFAULT" />
378                <category android:name="android.intent.category.DESK_DOCK" />
379            </intent-filter>
380        </activity>
381
382        <activity
383            android:name=".settings.BrightnessDialog"
384            android:label="@string/quick_settings_brightness_dialog_title"
385            android:theme="@android:style/Theme.DeviceDefault.Dialog"
386            android:finishOnCloseSystemDialogs="true"
387            android:launchMode="singleInstance"
388            android:excludeFromRecents="true"
389            android:exported="true">
390            <intent-filter>
391                <action android:name="android.intent.action.SHOW_BRIGHTNESS_DIALOG" />
392                <category android:name="android.intent.category.DEFAULT" />
393            </intent-filter>
394        </activity>
395
396        <!-- Doze with notifications, run in main sysui process for every user  -->
397        <service
398            android:name=".doze.DozeService"
399            android:exported="true"
400            android:singleUser="true"
401            android:permission="android.permission.BIND_DREAM_SERVICE" />
402
403        <receiver
404            android:name=".tuner.TunerService$ClearReceiver"
405            android:exported="false">
406            <intent-filter>
407                <action android:name="com.android.systemui.action.CLEAR_TUNER" />
408            </intent-filter>
409        </receiver>
410    </application>
411</manifest>
412