1<?xml version="1.0" encoding="utf-8"?> 2<!-- Copyright (C) 2008 The Android Open Source Project 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15--> 16 17<!-- This file is used to define the mappings between lower-level system 18 user and group IDs and the higher-level permission names managed 19 by the platform. 20 21 Be VERY careful when editing this file! Mistakes made here can open 22 big security holes. 23--> 24<permissions> 25 26 <!-- ================================================================== --> 27 <!-- ================================================================== --> 28 <!-- ================================================================== --> 29 30 <!-- The following tags are associating low-level group IDs with 31 permission names. By specifying such a mapping, you are saying 32 that any application process granted the given permission will 33 also be running with the given group ID attached to its process, 34 so it can perform any filesystem (read, write, execute) operations 35 allowed for that group. --> 36 37 <permission name="android.permission.BLUETOOTH_ADMIN" > 38 <group gid="net_bt_admin" /> 39 </permission> 40 41 <permission name="android.permission.BLUETOOTH" > 42 <group gid="net_bt" /> 43 </permission> 44 45 <permission name="android.permission.BLUETOOTH_STACK" > 46 <group gid="bluetooth" /> 47 <group gid="wakelock" /> 48 <group gid="uhid" /> 49 </permission> 50 51 <permission name="android.permission.VIRTUAL_INPUT_DEVICE" > 52 <group gid="uhid" /> 53 </permission> 54 55 <permission name="android.permission.NET_TUNNELING" > 56 <group gid="vpn" /> 57 </permission> 58 59 <permission name="android.permission.INTERNET" > 60 <group gid="inet" /> 61 </permission> 62 63 <permission name="android.permission.READ_LOGS" > 64 <group gid="log" /> 65 <group gid="update_engine_log" /> 66 </permission> 67 68 <permission name="android.permission.READ_UPDATE_ENGINE_LOGS" 69 featureFlag="com.android.update_engine.minor_changes_2025q4" > 70 <group gid="update_engine_log" /> 71 </permission> 72 73 <permission name="android.permission.ACCESS_MTP" > 74 <group gid="mtp" /> 75 </permission> 76 77 <permission name="android.permission.NET_ADMIN" > 78 <group gid="net_admin" /> 79 </permission> 80 81 <permission name="android.permission.MAINLINE_NETWORK_STACK" > 82 <group gid="net_admin" /> 83 <group gid="net_raw" /> 84 </permission> 85 86 <!-- The group that /cache belongs to, linked to the permission 87 set on the applications that can access /cache --> 88 <permission name="android.permission.ACCESS_CACHE_FILESYSTEM" > 89 <group gid="cache" /> 90 </permission> 91 92 <!-- RW permissions to any system resources owned by group 'diag'. 93 This is for carrier and manufacture diagnostics tools that must be 94 installable from the framework. Be careful. --> 95 <permission name="android.permission.DIAGNOSTIC" > 96 <group gid="input" /> 97 <group gid="diag" /> 98 </permission> 99 100 <!-- Group that can read detailed network usage statistics --> 101 <permission name="android.permission.READ_NETWORK_USAGE_HISTORY"> 102 <group gid="net_bw_stats" /> 103 </permission> 104 105 <!-- Group that can modify how network statistics are accounted --> 106 <permission name="android.permission.UPDATE_DEVICE_STATS"> 107 <group gid="net_bw_acct" /> 108 </permission> 109 110 <permission name="android.permission.LOOP_RADIO" > 111 <group gid="loop_radio" /> 112 </permission> 113 114 <!-- Hotword training apps sometimes need a GID to talk with low-level 115 hardware; give them audio for now until full HAL support is added. --> 116 <permission name="android.permission.MANAGE_VOICE_KEYPHRASES"> 117 <group gid="audio" /> 118 </permission> 119 120 <permission name="android.permission.ACCESS_BROADCAST_RADIO" > 121 <!-- /dev/fm is gid media, not audio --> 122 <group gid="media" /> 123 </permission> 124 125 <permission name="android.permission.USE_RESERVED_DISK"> 126 <group gid="reserved_disk" /> 127 </permission> 128 129 <permission name="android.permission.WRITE_SECURITY_LOG"> 130 <group gid="security_log_writer" /> 131 </permission> 132 133 <permission name="android.permission.MANAGE_VIRTUAL_MACHINE"> 134 <group gid="virtualmachine" /> 135 </permission> 136 137 <!-- These are permissions that were mapped to gids but we need 138 to keep them here until an upgrade from L to the current 139 version is to be supported. These permissions are built-in 140 and in L were not stored in packages.xml as a result if they 141 are not defined here while parsing packages.xml we would 142 ignore these permissions being granted to apps and not 143 propagate the granted state. From N we are storing the 144 built-in permissions in packages.xml as the saved storage 145 is negligible (one tag with the permission) compared to 146 the fragility as one can remove a built-in permission which 147 no longer needs to be mapped to gids and break grant propagation. --> 148 <permission name="android.permission.READ_EXTERNAL_STORAGE" /> 149 <permission name="android.permission.WRITE_EXTERNAL_STORAGE" /> 150 151 <!-- ================================================================== --> 152 <!-- ================================================================== --> 153 <!-- ================================================================== --> 154 155 <!-- The following tags are assigning high-level permissions to specific 156 user IDs. These are used to allow specific core system users to 157 perform the given operations with the higher-level framework. For 158 example, we give a wide variety of permissions to the shell user 159 since that is the user the adb shell runs under and developers and 160 others should have a fairly open environment in which to 161 interact with the system. --> 162 163 <assign-permission name="android.permission.MODIFY_AUDIO_SETTINGS" uid="media" /> 164 <assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="media" /> 165 <assign-permission name="android.permission.WAKE_LOCK" uid="media" /> 166 <assign-permission name="android.permission.UPDATE_DEVICE_STATS" uid="media" /> 167 <assign-permission name="android.permission.UPDATE_APP_OPS_STATS" uid="media" /> 168 <assign-permission name="android.permission.GET_PROCESS_STATE_AND_OOM_SCORE" uid="media" /> 169 <assign-permission name="android.permission.PACKAGE_USAGE_STATS" uid="media" /> 170 <assign-permission name="android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER" uid="media" /> 171 <assign-permission name="android.permission.REGISTER_STATS_PULL_ATOM" uid="media" /> 172 <assign-permission name="android.permission.INTERACT_ACROSS_USERS" uid="media" /> 173 <assign-permission name="android.permission.LOG_FOREGROUND_RESOURCE_USE" uid="media" /> 174 175 <assign-permission name="android.permission.INTERNET" uid="media" /> 176 177 <assign-permission name="android.permission.INTERNET" uid="shell" /> 178 179 <assign-permission name="android.permission.MODIFY_AUDIO_SETTINGS" uid="audioserver" /> 180 <assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="audioserver" /> 181 <assign-permission name="android.permission.WAKE_LOCK" uid="audioserver" /> 182 <assign-permission name="android.permission.UPDATE_DEVICE_STATS" uid="audioserver" /> 183 <assign-permission name="android.permission.UPDATE_APP_OPS_STATS" uid="audioserver" /> 184 <assign-permission name="android.permission.PACKAGE_USAGE_STATS" uid="audioserver" /> 185 <assign-permission name="android.permission.INTERACT_ACROSS_USERS_FULL" uid="audioserver" /> 186 <assign-permission name="android.permission.OBSERVE_SENSOR_PRIVACY" uid="audioserver" /> 187 <assign-permission name="android.permission.LOG_FOREGROUND_RESOURCE_USE" uid="audioserver" /> 188 189 <assign-permission name="android.permission.MODIFY_AUDIO_SETTINGS" uid="cameraserver" /> 190 <assign-permission name="android.permission.INTERACT_ACROSS_USERS_FULL" uid="cameraserver" /> 191 <assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="cameraserver" /> 192 <assign-permission name="android.permission.WAKE_LOCK" uid="cameraserver" /> 193 <assign-permission name="android.permission.UPDATE_DEVICE_STATS" uid="cameraserver" /> 194 <assign-permission name="android.permission.UPDATE_APP_OPS_STATS" uid="cameraserver" /> 195 <assign-permission name="android.permission.GET_PROCESS_STATE_AND_OOM_SCORE" uid="cameraserver" /> 196 <assign-permission name="android.permission.PACKAGE_USAGE_STATS" uid="cameraserver" /> 197 <assign-permission name="android.permission.WATCH_APPOPS" uid="cameraserver" /> 198 <assign-permission name="android.permission.MANAGE_APP_OPS_MODES" uid="cameraserver" /> 199 <assign-permission name="android.permission.OBSERVE_SENSOR_PRIVACY" uid="cameraserver" /> 200 <assign-permission name="android.permission.REAL_GET_TASKS" uid="cameraserver" /> 201 <assign-permission name="android.permission.LOG_FOREGROUND_RESOURCE_USE" uid="cameraserver" /> 202 203 <assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="graphics" /> 204 205 <assign-permission name="android.permission.DUMP" uid="incidentd" /> 206 <assign-permission name="android.permission.PACKAGE_USAGE_STATS" uid="incidentd" /> 207 <assign-permission name="android.permission.INTERACT_ACROSS_USERS" uid="incidentd" /> 208 <assign-permission name="android.permission.REQUEST_INCIDENT_REPORT_APPROVAL" uid="incidentd" /> 209 <assign-permission name="android.permission.PEEK_DROPBOX_DATA" uid="incidentd" /> 210 211 <assign-permission name="android.permission.ACCESS_LOWPAN_STATE" uid="lowpan" /> 212 <assign-permission name="android.permission.MANAGE_LOWPAN_INTERFACES" uid="lowpan" /> 213 214 <assign-permission name="android.permission.DUMP" uid="statsd" /> 215 <assign-permission name="android.permission.PACKAGE_USAGE_STATS" uid="statsd" /> 216 <assign-permission name="android.permission.STATSCOMPANION" uid="statsd" /> 217 <assign-permission name="android.permission.UPDATE_APP_OPS_STATS" uid="statsd" /> 218 219 <assign-permission name="android.permission.REGISTER_STATS_PULL_ATOM" uid="mmd" /> 220 <assign-permission name="android.permission.REGISTER_STATS_PULL_ATOM" uid="gpu_service" /> 221 <assign-permission name="android.permission.REGISTER_STATS_PULL_ATOM" uid="keystore" /> 222 223 <assign-permission name="android.permission.DYNAMIC_INSTRUMENTATION" uid="uprobestats" /> 224 225 <split-permission name="android.permission.ACCESS_FINE_LOCATION"> 226 <new-permission name="android.permission.ACCESS_COARSE_LOCATION" /> 227 </split-permission> 228 <split-permission name="android.permission.WRITE_EXTERNAL_STORAGE"> 229 <new-permission name="android.permission.READ_EXTERNAL_STORAGE" /> 230 </split-permission> 231 <split-permission name="android.permission.READ_CONTACTS" 232 targetSdk="16"> 233 <new-permission name="android.permission.READ_CALL_LOG" /> 234 </split-permission> 235 <split-permission name="android.permission.WRITE_CONTACTS" 236 targetSdk="16"> 237 <new-permission name="android.permission.WRITE_CALL_LOG" /> 238 </split-permission> 239 <split-permission name="android.permission.ACCESS_FINE_LOCATION" 240 targetSdk="29"> 241 <new-permission name="android.permission.ACCESS_BACKGROUND_LOCATION" /> 242 </split-permission> 243 <split-permission name="android.permission.ACCESS_COARSE_LOCATION" 244 targetSdk="29"> 245 <new-permission name="android.permission.ACCESS_BACKGROUND_LOCATION" /> 246 </split-permission> 247 <split-permission name="android.permission.READ_EXTERNAL_STORAGE" 248 targetSdk="29"> 249 <new-permission name="android.permission.ACCESS_MEDIA_LOCATION" /> 250 </split-permission> 251 <split-permission name="android.permission.WRITE_EXTERNAL_STORAGE" 252 targetSdk="29"> 253 <new-permission name="android.permission.ACCESS_MEDIA_LOCATION" /> 254 </split-permission> 255 <split-permission name="android.permission.BLUETOOTH" 256 targetSdk="31"> 257 <new-permission name="android.permission.BLUETOOTH_SCAN" /> 258 </split-permission> 259 <split-permission name="android.permission.BLUETOOTH" 260 targetSdk="31"> 261 <new-permission name="android.permission.BLUETOOTH_CONNECT" /> 262 </split-permission> 263 <split-permission name="android.permission.BLUETOOTH" 264 targetSdk="31"> 265 <new-permission name="android.permission.BLUETOOTH_ADVERTISE" /> 266 </split-permission> 267 <split-permission name="android.permission.BLUETOOTH_ADMIN" 268 targetSdk="31"> 269 <new-permission name="android.permission.BLUETOOTH_SCAN" /> 270 </split-permission> 271 <split-permission name="android.permission.BLUETOOTH_ADMIN" 272 targetSdk="31"> 273 <new-permission name="android.permission.BLUETOOTH_CONNECT" /> 274 </split-permission> 275 <split-permission name="android.permission.BLUETOOTH_ADMIN" 276 targetSdk="31"> 277 <new-permission name="android.permission.BLUETOOTH_ADVERTISE" /> 278 </split-permission> 279 <split-permission name="android.permission.BODY_SENSORS" 280 targetSdk="33"> 281 <new-permission name="android.permission.BODY_SENSORS_BACKGROUND" /> 282 </split-permission> 283 <split-permission name="android.permission.BODY_SENSORS" 284 featureFlag="android.permission.flags.replace_body_sensor_permission_enabled" 285 targetSdk="36"> 286 <new-permission name="android.permission.health.READ_HEART_RATE" /> 287 </split-permission> 288 <split-permission name="android.permission.BODY_SENSORS_BACKGROUND" 289 featureFlag="android.permission.flags.replace_body_sensor_permission_enabled" 290 targetSdk="36"> 291 <new-permission name="android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND" /> 292 </split-permission> 293 <split-permission name="android.permission.READ_EXTERNAL_STORAGE" 294 targetSdk="33"> 295 <new-permission name="android.permission.READ_MEDIA_AUDIO" /> 296 </split-permission> 297 <split-permission name="android.permission.READ_EXTERNAL_STORAGE" 298 targetSdk="33"> 299 <new-permission name="android.permission.READ_MEDIA_VIDEO" /> 300 </split-permission> 301 <split-permission name="android.permission.READ_EXTERNAL_STORAGE" 302 targetSdk="33"> 303 <new-permission name="android.permission.READ_MEDIA_IMAGES" /> 304 </split-permission> 305 <split-permission name="android.permission.WRITE_EXTERNAL_STORAGE" 306 targetSdk="33"> 307 <new-permission name="android.permission.READ_MEDIA_AUDIO" /> 308 </split-permission> 309 <split-permission name="android.permission.WRITE_EXTERNAL_STORAGE" 310 targetSdk="33"> 311 <new-permission name="android.permission.READ_MEDIA_VIDEO" /> 312 </split-permission> 313 <split-permission name="android.permission.WRITE_EXTERNAL_STORAGE" 314 targetSdk="33"> 315 <new-permission name="android.permission.READ_MEDIA_IMAGES" /> 316 </split-permission> 317 <split-permission name="android.permission.READ_MEDIA_IMAGES"> 318 <new-permission name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" /> 319 </split-permission> 320 <split-permission name="android.permission.READ_MEDIA_VIDEO"> 321 <new-permission name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" /> 322 </split-permission> 323 <split-permission name="android.permission.ACCESS_MEDIA_LOCATION"> 324 <new-permission name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" /> 325 </split-permission> 326 327 <!-- This is a list of all the libraries available for application 328 code to link against. --> 329 330 <library name="android.test.base" 331 file="/system/framework/android.test.base.jar" /> 332 <library name="android.test.mock" 333 file="/system/framework/android.test.mock.jar" /> 334 <library name="android.test.runner" 335 file="/system/framework/android.test.runner.jar" 336 dependency="android.test.base:android.test.mock" /> 337 338 <!-- In BOOT_JARS historically, and now added to legacy applications. --> 339 <library name="android.hidl.base-V1.0-java" 340 file="/system/framework/android.hidl.base-V1.0-java.jar" /> 341 <library name="android.hidl.manager-V1.0-java" 342 file="/system/framework/android.hidl.manager-V1.0-java.jar" /> 343 344 <!-- These are the standard packages that are allowed to always have internet 345 access while in power save mode, even if they aren't in the foreground. --> 346 <allow-in-power-save package="com.android.providers.downloads" /> 347 <allow-in-power-save package="com.android.rkpdapp" /> 348 349 <!-- These are the standard packages that are allowed to always have internet 350 access while in data mode, even if they aren't in the foreground. --> 351 <allow-in-data-usage-save package="com.android.providers.downloads" /> 352 <allow-in-data-usage-save package="com.android.rkpdapp" /> 353 354 <!-- This is a core platform component that needs to freely run in the background --> 355 <allow-in-power-save package="com.android.cellbroadcastreceiver.module" /> 356 <allow-in-power-save package="com.android.cellbroadcastreceiver" /> 357 <allow-in-power-save package="com.android.shell" /> 358 359 <!-- Emergency app needs to run in the background to reliably provide safety features --> 360 <allow-in-power-save package="com.android.emergency" /> 361 362 <!-- Allow system providers --> 363 <!-- Calendar provider needs alarms while in idle --> 364 <allow-in-power-save package="com.android.providers.calendar" /> 365 <allow-in-power-save-except-idle package="com.android.providers.contacts" /> 366 367 <!-- The PAC proxy process must have network access, otherwise no app will 368 be able to connect to the internet when such a proxy is in use, since 369 all outgoing connections originate from this app. --> 370 <allow-in-power-save-except-idle package="com.android.proxyhandler" /> 371 372 <!-- Allow IMS service entitlement app to schedule jobs to run when app in background. --> 373 <allow-in-power-save-except-idle package="com.android.imsserviceentitlement" /> 374 375 <!-- Allow device lock controller app to schedule jobs and alarms, and have network access 376 when app in background; otherwise, it may not be able to enforce provision for managed 377 devices. --> 378 <allow-in-power-save package="com.android.devicelockcontroller" /> 379 <allow-in-data-usage-save package="com.android.devicelockcontroller" /> 380</permissions> 381