1<?xml version="1.0" encoding="utf-8"?> 2<!-- 3/* 4 * Copyright (C) 2023 The Android Open Source Project 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 xmlns:tools="http://schemas.android.com/tools" 22 package="android.ext.services" 23 android:versionCode="309999900" 24 android:versionName="2019-09" 25 coreApp="true"> 26 27 <!-- Declare the broadcast as protected so only the system service can send it. The AdServices 28 System Service will send this broadcast to the AdServices module where there is a package 29 change.--> 30 <protected-broadcast android:name="com.android.ext.adservices.PACKAGE_CHANGED"/> 31 32 <!-- Allows the system service to query app status--> 33 <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/> 34 35 <!-- Permissions required for reading device configs --> 36 <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/> 37 38 <!-- Used for reporting --> 39 <uses-permission android:name="android.permission.INTERNET"/> 40 41 <!-- Used for scheduling connectivity jobs --> 42 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 43 44 <!-- Allows an application to access AdServices Topics API. --> 45 <permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS" 46 android:label="@string/permlab_accessAdServicesTopics" 47 android:description="@string/permdesc_accessAdServicesTopics" 48 android:protectionLevel="normal"/> 49 50 <!-- Allows an application to access AdServices Attribution APIs. --> 51 <permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" 52 android:label="@string/permlab_accessAdServicesAttribution" 53 android:description="@string/permdesc_accessAdServicesAttribution" 54 android:protectionLevel="normal"/> 55 56 <!-- Allows an application to access AdServices Custom Audience APIs. --> 57 <permission android:name="android.permission.ACCESS_ADSERVICES_CUSTOM_AUDIENCE" 58 android:label="@string/permlab_accessAdServicesCustomAudience" 59 android:description="@string/permdesc_accessAdServicesCustomAudience" 60 android:protectionLevel="normal"/> 61 62 <!-- Allows an application to access AdServices Ad Id API. --> 63 <permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" 64 android:label="@string/permlab_accessAdServicesAdId" 65 android:description="@string/permdesc_accessAdServicesAdId" 66 android:protectionLevel="normal"/> 67 68 <!-- Note: Signature permissions for AdServices code running in ExtServices APK must be 69 redefined with the suffix _COMPAT since the ExtServices and AdServices APKs are signed by 70 different keys. --> 71 72 <!-- Allows AdServices to access API for Ad ID. --> 73 <permission android:name="android.permission.ACCESS_PRIVILEGED_AD_ID_COMPAT" 74 android:label="@string/permlab_adServicesAccessAdId" 75 android:description="@string/permdesc_adServicesAccessAdId" 76 android:protectionLevel="signature"/> 77 78 <!-- Allows AdServices to access API for App set ID. --> 79 <permission android:name="android.permission.ACCESS_PRIVILEGED_APP_SET_ID_COMPAT" 80 android:label="@string/permlab_adServicesAccessAppSetId" 81 android:description="@string/permdesc_adServicesAccessAppSetId" 82 android:protectionLevel="signature"/> 83 84 <!-- Allows AdServices to access API for AdServices Cobalt upload. --> 85 <permission android:name="android.permission.ACCESS_PRIVILEGED_ADSERVICES_COBALT_UPLOAD_COMPAT" 86 android:label="@string/permlab_adServicesAccessAdServicesCobaltUpload" 87 android:description="@string/permdesc_adServicesAccessAdServicesCobaltUpload" 88 android:protectionLevel="signature"/> 89 90 <!-- Allows the caller to modify AdService's state via Common Service. --> 91 <permission android:name="android.permission.MODIFY_ADSERVICES_STATE_COMPAT" 92 android:label="@string/permlab_modifyAdServicesState" 93 android:description="@string/permdesc_modifyAdServicesState" 94 android:protectionLevel="signature|configurator"/> 95 96 <!-- Allows the caller to get AdService's state via Common Service. --> 97 <permission android:name="android.permission.ACCESS_ADSERVICES_STATE_COMPAT" 98 android:label="@string/permlab_accessAdServicesState" 99 android:description="@string/permdesc_accessAdServicesState" 100 android:protectionLevel="signature|configurator"/> 101 102 <!-- Permission to allow calling updating AdId Cache API via Common Service. --> 103 <permission android:name="android.permission.UPDATE_PRIVILEGED_AD_ID_COMPAT" 104 android:label="@string/permlab_updateAdservicesAdId" 105 android:description="@string/permdesc_updateAdservicesAdId" 106 android:protectionLevel="signature|configurator"/> 107 108 <uses-permission android:name="android.permission.ACCESS_PRIVILEGED_AD_ID_COMPAT"/> 109 <uses-permission android:name="android.permission.ACCESS_PRIVILEGED_APP_SET_ID_COMPAT"/> 110 <uses-permission android:name="android.permission.ACCESS_PRIVILEGED_ADSERVICES_COBALT_UPLOAD_COMPAT" /> 111 112 <!-- Permission to allow self calling Common Service. --> 113 <uses-permission android:name="android.permission.ACCESS_ADSERVICES_STATE_COMPAT"/> 114 <uses-permission android:name="android.permission.MODIFY_ADSERVICES_STATE_COMPAT"/> 115 116 <!-- Allows JobScheduler to persist jobs across reboot. --> 117 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 118 119 <!-- Required for sending measurement events --> 120 <uses-permission android:name="android.permission.ondevicepersonalization.NOTIFY_MEASUREMENT_EVENT"/> 121 122 <!-- LINT.IfChange(adExtServicesApplication) --> 123 <application 124 android:name=".ExtServicesApplication" 125 android:label="@string/app_name" 126 android:forceQueryable="true" 127 android:allowBackup="false" 128 android:supportsRtl="true" 129 android:icon="@drawable/ic_android_icon" 130 android:theme="@style/FilterTouches"> 131 <!-- Activity for the main view of Adservices Settings UI--> 132 <activity 133 android:name="com.android.adservices.ui.settings.activities.AdServicesSettingsMainActivity" 134 android:exported="true" 135 android:enabled="false" 136 android:theme="@style/Theme.SubSettingsBase" 137 android:process=".adservices"> 138 <intent-filter android:priority="1"> 139 <action android:name="android.adservices.ui.SETTINGS"/> 140 <category android:name="android.intent.category.DEFAULT"/> 141 </intent-filter> 142 </activity> 143 144 <!-- Activity for the topics view of Adservices Settings UI--> 145 <activity 146 android:name="com.android.adservices.ui.settings.activities.TopicsActivity" 147 android:exported="true" 148 android:enabled="false" 149 android:theme="@style/Theme.SubSettingsBase" 150 android:process=".adservices"> 151 <intent-filter android:priority="1"> 152 <action android:name="android.adservices.ui.TOPICS"/> 153 <category android:name="android.intent.category.DEFAULT"/> 154 </intent-filter> 155 </activity> 156 157 <!-- Activity for the blocked topics view of Adservices Settings UI--> 158 <activity 159 android:name="com.android.adservices.ui.settings.activities.BlockedTopicsActivity" 160 android:exported="true" 161 android:enabled="false" 162 android:theme="@style/Theme.SubSettingsBase" 163 android:process=".adservices"> 164 <intent-filter android:priority="1"> 165 <action android:name="android.adservices.ui.BLOCKED_TOPICS"/> 166 <category android:name="android.intent.category.DEFAULT"/> 167 </intent-filter> 168 </activity> 169 170 <!-- Activity for the apps view of Adservices Settings UI--> 171 <activity 172 android:name="com.android.adservices.ui.settings.activities.AppsActivity" 173 android:exported="true" 174 android:enabled="false" 175 android:theme="@style/Theme.SubSettingsBase" 176 android:process=".adservices"> 177 <intent-filter android:priority="1"> 178 <action android:name="android.adservices.ui.APPS"/> 179 <category android:name="android.intent.category.DEFAULT"/> 180 </intent-filter> 181 </activity> 182 183 <!-- Activity for the blocked apps view of Adservices Settings UI--> 184 <activity 185 android:name="com.android.adservices.ui.settings.activities.BlockedAppsActivity" 186 android:exported="true" 187 android:enabled="false" 188 android:theme="@style/Theme.SubSettingsBase" 189 android:process=".adservices"> 190 <intent-filter android:priority="1"> 191 <action android:name="android.adservices.ui.BLOCKED_APPS"/> 192 <category android:name="android.intent.category.DEFAULT"/> 193 </intent-filter> 194 </activity> 195 196 <!-- Activity for the ads measurement view of AdServices Settings UI--> 197 <activity 198 android:name="com.android.adservices.ui.settings.activities.MeasurementActivity" 199 android:exported="true" 200 android:enabled="false" 201 android:theme="@style/Theme.SubSettingsBase" 202 android:process=".adservices"> 203 <intent-filter android:priority="1"> 204 <action android:name="android.adservices.ui.MEASUREMENT"/> 205 <category android:name="android.intent.category.DEFAULT"/> 206 </intent-filter> 207 </activity> 208 209 <!-- Activity for Adservices Detailed Notification UI --> 210 <activity 211 android:name="com.android.adservices.ui.notifications.ConsentNotificationActivity" 212 android:exported="true" 213 android:enabled="false" 214 android:theme="@style/AdServices.NotificationTheme" 215 android:process=".adservices"> 216 <intent-filter android:priority="1"> 217 <action android:name="android.adservices.ui.NOTIFICATIONS"/> 218 <category android:name="android.intent.category.DEFAULT"/> 219 </intent-filter> 220 </activity> 221 222 <!-- Activity for Adservices to run shell command. --> 223 <!-- Dump permission limits who can call this activity, Shell has DUMP permission --> 224 <activity 225 android:name="com.android.adservices.shell.ShellCommandActivity" 226 android:exported="true" 227 android:theme="@style/Theme.SubSettingsBase" 228 android:permission="android.permission.DUMP" 229 android:process=".adservices"> 230 <intent-filter android:priority="1"> 231 <action android:name="android.adservices.BACK_COMPACT_SHELL_COMMAND"/> 232 <category android:name="android.intent.category.DEFAULT"/> 233 </intent-filter> 234 </activity> 235 236 <service android:name="com.android.adservices.adselection.AdSelectionService" 237 android:enabled="@bool/isAtLeastS" 238 android:exported="true" 239 android:visibleToInstantApps="false" 240 android:process=".adservices"> 241 <intent-filter android:priority="1"> 242 <action android:name="android.adservices.adselection.AD_SELECTION_SERVICE"/> 243 </intent-filter> 244 </service> 245 246 <service android:name= 247 "com.android.adservices.customaudience.CustomAudienceService" 248 android:enabled="@bool/isAtLeastS" 249 android:exported="true" 250 android:visibleToInstantApps="false" 251 android:process=".adservices"> 252 <intent-filter android:priority="1"> 253 <action android:name= 254 "android.adservices.customaudience.CUSTOM_AUDIENCE_SERVICE"/> 255 </intent-filter> 256 </service> 257 258 <service android:name= 259 "android.adservices.signals.ProtectedSignalsService" 260 android:enabled="@bool/isAtLeastS" 261 android:exported="true" 262 android:visibleToInstantApps="false" 263 android:process=".adservices"> 264 <intent-filter android:priority="1"> 265 <action android:name= 266 "android.adservices.signals.PROTECTED_SIGNALS_SERVICE"/> 267 </intent-filter> 268 </service> 269 270 <service android:name="com.android.adservices.topics.TopicsService" 271 android:enabled="@bool/isAtLeastS" 272 android:exported="true" 273 android:visibleToInstantApps="false" 274 android:process=".adservices"> 275 <intent-filter android:priority="1"> 276 <action android:name="android.adservices.TOPICS_SERVICE"/> 277 </intent-filter> 278 </service> 279 280 <service android:name="com.android.adservices.adid.AdIdService" 281 android:exported="true" 282 android:visibleToInstantApps="false" 283 android:process=".adservices"> 284 <intent-filter android:priority="1"> 285 <action android:name="android.adservices.ADID_SERVICE"/> 286 </intent-filter> 287 </service> 288 289 <service android:name="com.android.adservices.appsetid.AppSetIdService" 290 android:enabled="@bool/isAtLeastS" 291 android:exported="true" 292 android:visibleToInstantApps="false" 293 android:process=".adservices"> 294 <intent-filter android:priority="1"> 295 <action android:name="android.adservices.APPSETID_SERVICE"/> 296 </intent-filter> 297 </service> 298 299 <service android:name="com.android.adservices.measurement.MeasurementService" 300 android:exported="true" 301 android:visibleToInstantApps="false" 302 android:process=".adservices"> 303 <intent-filter android:priority="1"> 304 <action android:name="android.adservices.MEASUREMENT_SERVICE"/> 305 </intent-filter> 306 </service> 307 308 <service android:name="com.android.adservices.common.AdServicesCommonService" 309 android:exported="true" 310 android:visibleToInstantApps="false" 311 android:process=".adservices"> 312 <intent-filter android:priority="1"> 313 <action android:name="android.adservices.AD_SERVICES_COMMON_SERVICE"/> 314 </intent-filter> 315 </service> 316 317 <!-- The JobService schedules all jobs for AdServices using SPE framework. --> 318 <service android:name="com.android.adservices.spe.AdServicesJobService" 319 android:permission="android.permission.BIND_JOB_SERVICE" 320 android:process=".adservices"> 321 </service> 322 323 <!-- Daily maintenance Job. --> 324 <service android:name="com.android.adservices.service.MaintenanceJobService" 325 android:permission="android.permission.BIND_JOB_SERVICE" 326 android:process=".adservices"> 327 </service> 328 329 <!-- Epoch computation Job. --> 330 <service android:name="com.android.adservices.service.topics.EpochJobService" 331 android:permission="android.permission.BIND_JOB_SERVICE" 332 android:process=".adservices"> 333 </service> 334 335 <!-- Mdd background Job. --> 336 <service android:name="com.android.adservices.download.MddJobService" 337 android:permission="android.permission.BIND_JOB_SERVICE" 338 android:process=".adservices"> 339 </service> 340 341 <!-- Encryption key fetch job. --> 342 <service android:name="com.android.adservices.service.encryptionkey.EncryptionKeyJobService" 343 android:permission="android.permission.BIND_JOB_SERVICE" 344 android:process=".adservices"> 345 </service> 346 347 <!-- Enable Notification Job. --> 348 <service android:name="com.android.adservices.service.common.ConsentNotificationJobService" 349 android:permission="android.permission.BIND_JOB_SERVICE" 350 android:process=".adservices"> 351 </service> 352 353 <!-- Measurement event main report upload job. --> 354 <service 355 android:name="com.android.adservices.service.measurement.reporting.EventReportingJobService" 356 android:permission="android.permission.BIND_JOB_SERVICE" 357 android:process=".adservices"> 358 </service> 359 360 <!-- Measurement debug report upload job. --> 361 <service android:name= 362 "com.android.adservices.service.measurement.reporting.DebugReportingJobService" 363 android:permission="android.permission.BIND_JOB_SERVICE" 364 android:process=".adservices"> 365 </service> 366 367 <!-- Measurement verbose debug report upload job. --> 368 <service android:name= 369 "com.android.adservices.service.measurement.reporting.VerboseDebugReportingJobService" 370 android:permission="android.permission.BIND_JOB_SERVICE" 371 android:process=".adservices"> 372 </service> 373 374 <!-- Measurement event fallback report upload job. --> 375 <service android:name= 376 "com.android.adservices.service.measurement.reporting.EventFallbackReportingJobService" 377 android:permission="android.permission.BIND_JOB_SERVICE" 378 android:process=".adservices"> 379 </service> 380 381 <!-- Measurement aggregate main report upload job. --> 382 <service android:name= 383 "com.android.adservices.service.measurement.reporting.AggregateReportingJobService" 384 android:permission="android.permission.BIND_JOB_SERVICE" 385 android:process=".adservices"> 386 </service> 387 388 <!-- Measurement aggregate fallback report upload job. --> 389 <service android:name= 390 "com.android.adservices.service.measurement.reporting.AggregateFallbackReportingJobService" 391 android:permission="android.permission.BIND_JOB_SERVICE" 392 android:process=".adservices"> 393 </service> 394 395 <!-- Measurement immediate aggregate report upload job. --> 396 <service android:name= 397 "com.android.adservices.service.measurement.reporting.ImmediateAggregateReportingJobService" 398 android:permission="android.permission.BIND_JOB_SERVICE" 399 android:process=".adservices"> 400 </service> 401 402 <!-- Measurement regular report upload job. --> 403 <service android:name= 404 "com.android.adservices.service.measurement.reporting.ReportingJobService" 405 android:permission="android.permission.BIND_JOB_SERVICE" 406 android:process=".adservices"> 407 </service> 408 409 <!-- Measurement Attribution Job.--> 410 <service android:name= 411 "com.android.adservices.service.measurement.attribution.AttributionJobService" 412 android:permission="android.permission.BIND_JOB_SERVICE" 413 android:process=".adservices"> 414 </service> 415 <!-- Measurement Attribution Fallback Job.--> 416 <service android:name= 417 "com.android.adservices.service.measurement.attribution.AttributionFallbackJobService" 418 android:permission="android.permission.BIND_JOB_SERVICE" 419 android:process=".adservices"> 420 </service> 421 422 <!-- Deletion Job.--> 423 <service android:name= 424 "com.android.adservices.service.measurement.DeleteExpiredJobService" 425 android:permission="android.permission.BIND_JOB_SERVICE" 426 android:process=".adservices"> 427 </service> 428 429 <!-- Measurement Deletion Uninstalled Apps Job. --> 430 <service android:name= 431 "com.android.adservices.service.measurement.DeleteUninstalledJobService" 432 android:permission="android.permission.BIND_JOB_SERVICE" 433 android:process=".adservices"> 434 </service> 435 436 <!-- FLEDGE Background Fetch Job --> 437 <service android:name= 438 "com.android.adservices.service.customaudience.BackgroundFetchJobService" 439 android:permission="android.permission.BIND_JOB_SERVICE" 440 android:process=".adservices"> 441 </service> 442 443 <!-- FLEDGE Schedule Custom Audience Update Job --> 444 <service android:name= 445 "com.android.adservices.service.customaudience.ScheduleCustomAudienceUpdateJobService" 446 android:permission="android.permission.BIND_JOB_SERVICE" 447 android:process=".adservices"> 448 </service> 449 450 <!-- FLEDGE Ad selection debug report sender Job --> 451 <service android:name= 452 "com.android.adservices.service.adselection.DebugReportSenderJobService" 453 android:permission="android.permission.BIND_JOB_SERVICE" 454 android:process=".adservices"> 455 </service> 456 457 <!-- FLEDGE Protected Signals periodic encoding job --> 458 <service android:name= 459 "com.android.adservices.service.signals.PeriodicEncodingJobService" 460 android:permission="android.permission.BIND_JOB_SERVICE" 461 android:process=".adservices"> 462 </service> 463 464 <!-- FLEDGE KAnon sign join background job --> 465 <service android:name= 466 "com.android.adservices.service.kanon.KAnonSignJoinBackgroundJobService" 467 android:permission="android.permission.BIND_JOB_SERVICE" 468 android:process=".adservices"> 469 </service> 470 471 <!-- FLEDGE Background Key Fetch Job --> 472 <service android:name= 473 "com.android.adservices.service.adselection.encryption.BackgroundKeyFetchJobService" 474 android:permission="android.permission.BIND_JOB_SERVICE" 475 android:process=".adservices"> 476 </service> 477 478 <!-- Measurement Registration Job --> 479 <service android:name= 480 "com.android.adservices.service.measurement.registration.AsyncRegistrationQueueJobService" 481 android:permission="android.permission.BIND_JOB_SERVICE" 482 android:process=".adservices"> 483 </service> 484 <!-- Measurement Registration Fallback Job --> 485 <service android:name= 486 "com.android.adservices.service.measurement.registration.AsyncRegistrationFallbackJobService" 487 android:permission="android.permission.BIND_JOB_SERVICE" 488 android:process=".adservices"> 489 </service> 490 491 <!-- Measurement Verbose Debug Reporting Fallback Job. --> 492 <service android:name= 493 "com.android.adservices.service.measurement.reporting.VerboseDebugReportingFallbackJobService" 494 android:permission="android.permission.BIND_JOB_SERVICE" 495 android:process=".adservices"> 496 </service> 497 498 <!-- Measurement Debug Reporting Fallback Job. --> 499 <service android:name= 500 "com.android.adservices.service.measurement.reporting.DebugReportingFallbackJobService" 501 android:permission="android.permission.BIND_JOB_SERVICE" 502 android:process=".adservices"> 503 </service> 504 505 <!-- Cobalt Logging Job --> 506 <service android:name="com.android.adservices.cobalt.CobaltJobService" 507 android:permission="android.permission.BIND_JOB_SERVICE" 508 android:process=".adservices"> 509 </service> 510 511 <provider 512 android:name= 513 "com.android.adservices.service.measurement.attribution.TriggerContentProvider" 514 android:authorities="com.android.ext.adservices.provider.trigger" 515 android:exported="false" 516 android:process=".adservices" 517 /> 518 519 <provider 520 android:name= 521 "com.android.adservices.service.measurement.registration.AsyncRegistrationContentProvider" 522 android:authorities="com.android.ext.adservices.provider.asyncregistration" 523 android:exported="false" 524 android:process=".adservices" 525 /> 526 527 <provider 528 android:name="com.android.adservices.service.common.AdServicesInternalProvider" 529 android:authorities="com.android.ext.adservices.provider.internal" 530 android:exported="false" 531 android:process=".adservices" 532 /> 533 534 <!-- Boot completed receiver registers package changed event receivers. --> 535 <receiver android:name="com.android.adservices.service.common.AdExtBootCompletedReceiver" 536 android:enabled="@bool/isAdExtBootCompletedReceiverEnabled" 537 android:exported="true" 538 android:process=".adservices"> 539 <intent-filter> 540 <action android:name="android.intent.action.BOOT_COMPLETED"/> 541 </intent-filter> 542 </receiver> 543 544 <!-- On S-, this class handles intents from the system. --> 545 <receiver android:name="com.android.adservices.service.common.PackageChangedReceiver" 546 android:enabled="false" 547 android:exported="true" 548 android:process=".adservices"> 549 <intent-filter> 550 <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/> 551 <action android:name="android.intent.action.PACKAGE_DATA_CLEARED"/> 552 <data android:scheme="package"/> 553 </intent-filter> 554 </receiver> 555 556 <!-- Used and present only on S- --> 557 <uses-library android:name="android.ext.adservices" android:required="false"/> 558 </application> 559 <!-- LINT.ThenChange(adservices/service-core/java/com/android/adservices/service/common/compat/PackageManagerCompatUtils.java:activities_and_services) --> 560</manifest> 561