1<?xml version="1.0" encoding="utf-8"?> 2<!-- 3 ~ Copyright (C) 2023 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<!--The base manifest file contains all elements from DeviceLockController. 19 Any new components should also be added to 20 src/com/android/devicelockcontroller/debug/AndroidManifest.xml 21 --> 22<manifest xmlns:android="http://schemas.android.com/apk/res/android" 23 xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" 24 xmlns:tools="http://schemas.android.com/tools" 25 package="com.android.devicelockcontroller"> 26 27 <!-- Permission for calls from controller to device lock service --> 28 <permission android:name="com.android.devicelockcontroller.permission.MANAGE_DEVICE_LOCK_SERVICE_FROM_CONTROLLER" 29 android:protectionLevel="signature" /> 30 <!-- Permission used by a Kiosk app to send the clear device broadcast. Given that no app holds 31 this permission, only our system service component is able to receive the broadcast --> 32 <permission android:name="com.android.devicelock.permission.RECEIVE_CLEAR_BROADCAST" 33 android:protectionLevel="signature" /> 34 <!-- Permission checked by kiosk setup activity --> 35 <permission android:name="com.android.devicelock.permission.START_KIOSK_SETUP_ACTIVITY" 36 android:protectionLevel="signature" /> 37 38 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 39 <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" /> 40 <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" /> 41 <uses-permission android:name="android.permission.MASTER_CLEAR" /> 42 <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_APPS_CONTROL" /> 43 <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_CALLS" /> 44 <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES" /> 45 <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES" /> 46 <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_LOCK_TASK" /> 47 <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_SAFE_BOOT" /> 48 <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_TIME" /> 49 <uses-permission android:name="android.permission.INTERNET" /> 50 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 51 <uses-permission android:name="android.permission.USE_EXACT_ALARM" /> 52 <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> 53 <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" /> 54 <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" /> 55 <!-- Controller grants itself this permission to call internal APIs on device lock system service --> 56 <uses-permission android:name="com.android.devicelockcontroller.permission.MANAGE_DEVICE_LOCK_SERVICE_FROM_CONTROLLER" /> 57 <!-- Kiosk app setup activity should have a corresponding "android:permission" attribute --> 58 <uses-permission android:name="com.android.devicelock.permission.START_KIOSK_SETUP_ACTIVITY" /> 59 60 <application 61 android:name=".DeviceLockControllerApplication" 62 android:allowBackup="false" 63 android:allowClearUserData="false" 64 android:label="@string/app_name" 65 android:supportsRtl="true"> 66 <activity 67 android:name="com.android.devicelockcontroller.activities.HelpActivity" 68 android:exported="false" 69 android:theme="@style/Theme.DeviceLock.NoActionBar" /> 70 <activity 71 android:name="com.android.devicelockcontroller.activities.LandingActivity" 72 android:exported="false" 73 android:excludeFromRecents="true" 74 android:immersive="true" 75 android:theme="@style/Theme.DeviceLock.NoActionBar"> 76 <intent-filter> 77 <action android:name="com.android.devicelockcontroller.action.START_DEVICE_FINANCING_PROVISIONING" /> 78 <category android:name="android.intent.category.DEFAULT" /> 79 </intent-filter> 80 </activity> 81 <activity 82 android:name="com.android.devicelockcontroller.activities.LockedHomeActivity" 83 android:enabled="false" 84 android:excludeFromRecents="true" 85 android:launchMode="singleInstance" 86 android:exported="true" 87 android:noHistory="true" 88 android:theme="@android:style/Theme.Translucent.NoTitleBar">> 89 <intent-filter> 90 <action android:name="android.intent.action.MAIN" /> 91 <category android:name="android.intent.category.HOME"/> 92 <category android:name="android.intent.category.DEFAULT"/> 93 </intent-filter> 94 </activity> 95 96 <activity 97 android:name="com.android.devicelockcontroller.activities.ProvisioningActivity" 98 android:exported="false" 99 android:excludeFromRecents="true" 100 android:immersive="true" 101 android:theme="@style/Theme.DeviceLock.NoActionBar" /> 102 103 <activity-alias 104 android:name="com.android.devicelockcontroller.activities.DeviceFinancingSecondaryUserLandingActivity" 105 android:exported="false" 106 android:targetActivity=".activities.LandingActivity"> 107 <intent-filter> 108 <action android:name="com.android.devicelockcontroller.action.START_DEVICE_FINANCING_SECONDARY_USER_PROVISIONING" /> 109 <category android:name="android.intent.category.DEFAULT" /> 110 </intent-filter> 111 </activity-alias> 112 <activity-alias 113 android:name="com.android.devicelockcontroller.activities.DeviceFinancingDeferredProvisioningLandingActivity" 114 android:exported="false" 115 android:targetActivity=".activities.LandingActivity"> 116 <intent-filter> 117 <action android:name="com.android.devicelockcontroller.action.START_DEVICE_FINANCING_DEFERRED_PROVISIONING" /> 118 <category android:name="android.intent.category.DEFAULT" /> 119 </intent-filter> 120 </activity-alias> 121 <activity-alias 122 android:name="com.android.devicelockcontroller.activities.DeviceSubsidyProvisioningLandingActivity" 123 android:exported="false" 124 android:targetActivity=".activities.LandingActivity"> 125 <intent-filter> 126 <action android:name="com.android.devicelockcontroller.action.START_DEVICE_SUBSIDY_PROVISIONING" /> 127 <category android:name="android.intent.category.DEFAULT" /> 128 </intent-filter> 129 </activity-alias> 130 131 <activity-alias 132 android:name="com.android.devicelockcontroller.activities.DeviceSubsidyDeferredProvisioningLandingActivity" 133 android:exported="false" 134 android:targetActivity=".activities.LandingActivity"> 135 <intent-filter> 136 <action android:name="com.android.devicelockcontroller.action.START_DEVICE_SUBSIDY_DEFERRED_PROVISIONING" /> 137 <category android:name="android.intent.category.DEFAULT" /> 138 </intent-filter> 139 </activity-alias> 140 141 <activity 142 android:name="com.android.devicelockcontroller.activities.DeviceLockSettingsActivity" 143 android:theme="@style/Theme.DeviceLock.NoActionBar" 144 android:exported="true"> 145 <intent-filter> 146 <action android:name="com.android.devicelockcontroller.action.DEVICE_INFO_SETTINGS"/> 147 <category android:name="android.intent.category.DEFAULT"/> 148 </intent-filter> 149 </activity> 150 151 <provider 152 android:name="androidx.startup.InitializationProvider" 153 android:authorities="${applicationId}.androidx-startup" 154 tools:node="remove" /> 155 156 <!-- System user only boot completed broadcast receiver. This should disabled after provision ready --> 157 <receiver 158 android:name="com.android.devicelockcontroller.receivers.CheckInBootCompletedReceiver" 159 android:exported="false" 160 androidprv:systemUserOnly="true"> 161 <intent-filter> 162 <action android:name="android.intent.action.BOOT_COMPLETED" /> 163 </intent-filter> 164 </receiver> 165 166 <!-- Multi users boot completed broadcast receiver. --> 167 <receiver 168 android:name="com.android.devicelockcontroller.receivers.FinalizationBootCompletedReceiver" 169 android:exported="false" 170 android:singleUser="false" 171 android:enabled="false"> 172 <intent-filter> 173 <action android:name="android.intent.action.BOOT_COMPLETED" /> 174 </intent-filter> 175 </receiver> 176 177 <!-- Multi users locked boot completed broadcast receiver. This receiver should only be enabled after provision ready --> 178 <receiver 179 android:name="com.android.devicelockcontroller.receivers.LockedBootCompletedReceiver" 180 android:directBootAware="true" 181 android:enabled="false" 182 android:exported="false" 183 android:singleUser="false"> 184 <intent-filter> 185 <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /> 186 </intent-filter> 187 </receiver> 188 189 <!-- Multi users locked boot completed broadcast receiver. This receiver records the boot 190 timestamp --> 191 <receiver 192 android:name="com.android.devicelockcontroller.receivers.RecordBootTimestampReceiver" 193 android:directBootAware="true" 194 android:exported="false" 195 android:singleUser="false"> 196 <intent-filter> 197 <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /> 198 </intent-filter> 199 </receiver> 200 201 <!-- Multi users time changed broadcast receiver --> 202 <receiver 203 android:name="com.android.devicelockcontroller.receivers.TimeChangedBroadcastReceiver" 204 android:exported="false" 205 android:singleUser="false"> 206 <intent-filter> 207 <action android:name="android.intent.action.TIME_SET" /> 208 </intent-filter> 209 </receiver> 210 211 <receiver 212 android:name="com.android.devicelockcontroller.receivers.ProvisionReadyReceiver" 213 android:exported="false" 214 android:singleUser="false" /> 215 216 <receiver 217 android:name="com.android.devicelockcontroller.receivers.ResumeProvisionReceiver" 218 android:exported="false" 219 android:singleUser="false" /> 220 221 <receiver 222 android:name="com.android.devicelockcontroller.receivers.NextProvisionFailedStepReceiver" 223 android:exported="false" 224 android:singleUser="false" /> 225 226 <receiver 227 android:name="com.android.devicelockcontroller.receivers.ResetDeviceReceiver" 228 android:exported="false" 229 android:singleUser="false" /> 230 231 <receiver 232 android:name="com.android.devicelockcontroller.WorkManagerExceptionHandler$WorkFailureAlarmReceiver" 233 android:exported="false" 234 androidprv:systemUserOnly="true" /> 235 236 <service 237 android:name="com.android.devicelockcontroller.DeviceLockControllerService" 238 android:directBootAware="true" 239 android:exported="false"> 240 <intent-filter> 241 <action android:name="android.app.action.DEVICE_LOCK_CONTROLLER_SERVICE" /> 242 </intent-filter> 243 </service> 244 245 <service 246 android:name="com.android.devicelockcontroller.storage.SetupParametersService" 247 android:directBootAware="true" 248 android:exported="false" 249 android:singleUser="true" /> 250 251 <service 252 android:name="com.android.devicelockcontroller.storage.GlobalParametersService" 253 android:directBootAware="true" 254 android:exported="false" 255 android:singleUser="true" /> 256 257 <service 258 android:name="com.android.devicelockcontroller.services.DeviceLockKeepAliveService" 259 android:directBootAware="true" 260 android:exported="false"> 261 <intent-filter> 262 <action android:name="com.android.devicelock.action.KEEPALIVE" /> 263 </intent-filter> 264 </service> 265 266 </application> 267 268</manifest> 269