Zygote
API 34 · UPSIDE_DOWN_CAKE

Android 14 Upside Down Cake

Partial screen recording

released
2023-10-04
runtime
ART
design
Material You
status
stable

The story

Android 14 tightened the rules around background work and media access.

The problem

Foreground services had become a loophole for permanent background execution, and media access was still all-or-nothing.

Android 14 required foreground service types and their permissions, added selected-photos access, and restricted full-screen intents.

The one thing to remember

Foreground services had to say why they existed.

What shipped

  • Partial screen recording
  • Selected photos access
  • Regional preferences
  • Generative AI wallpapers
  • Predictive back improvements

Platform internals

What changed underneath the APIs. These are the changes this site's architecture modules explain in depth.

  • Foreground service types are mandatory
  • Selected photos access via READ_MEDIA_VISUAL_USER_SELECTED

What developers had to deal with

  • Foreground service types required when targeting 34
  • READ_MEDIA_VISUAL_USER_SELECTED
  • Non-linear font scaling
  • Full-screen intent restrictions
  • User-initiated data transfer jobs

Permissions introduced here

  • BIND_CREDENTIAL_PROVIDER_SERVICEsignature
  • CONFIGURE_WIFI_DISPLAYunknown
  • CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALSnormal
  • CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERSnormal
  • CREDENTIAL_MANAGER_SET_ORIGINnormal
  • DETECT_SCREEN_CAPTUREnormal
  • ENFORCE_UPDATE_OWNERSHIPnormal
  • EXECUTE_APP_ACTIONinternal|role
  • FOREGROUND_SERVICE_CAMERAnormal|instant
  • FOREGROUND_SERVICE_CONNECTED_DEVICEnormal|instant
  • FOREGROUND_SERVICE_DATA_SYNCnormal|instant
  • FOREGROUND_SERVICE_HEALTHnormal|instant
  • FOREGROUND_SERVICE_LOCATIONnormal|instant
  • FOREGROUND_SERVICE_MEDIA_PLAYBACKnormal|instant
  • FOREGROUND_SERVICE_MEDIA_PROJECTIONnormal|instant
  • FOREGROUND_SERVICE_MICROPHONEnormal|instant
  • FOREGROUND_SERVICE_PHONE_CALLnormal|instant
  • FOREGROUND_SERVICE_REMOTE_MESSAGINGnormal|instant
  • FOREGROUND_SERVICE_SPECIAL_USEnormal|appop|instant
  • FOREGROUND_SERVICE_SYSTEM_EXEMPTEDnormal|instant
  • LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTEinternal|role
  • MANAGE_DEVICE_LOCK_STATEinternal|role
  • MANAGE_DEVICE_POLICY_ACCESSIBILITYinternal|role
  • MANAGE_DEVICE_POLICY_ACCOUNT_MANAGEMENTinternal|role

…and 80 more.

Where this sits

Release 34 of 37 API levels, by date
Headline features
5
Architecture changes
2
Developer changes
5
Sources cited
5

Kernel

This release shipped on Linux kernel versions 5.15, 6.1. Kernel versions vary by device.