Android 15 Behavior Changes: All Apps

Android 15 introduces several changes that impact how apps function, regardless of the target SDK version. These Android 15 behavior changes affect all applications and require developers to understand the new Android 15 updates to ensure their apps continue working properly. Whether you're developing for Android 15 or maintaining existing applications, these changes will significantly influence your app's behavior and user experience.

Updates to the FLAG_STOPPED State

Android 15 introduces an update to align with the original intent of the FLAG_STOPPED state. This state, accessible by long-pressing an app icon and selecting 'Force Stop' in AOSP builds, will now persist until the user actively engages with the app, either directly (launching the app) or indirectly (interacting via sharesheet, widget, or live wallpaper). The stopped state triggers cancellation of pending intents. Upon exit from stopped state, the app receives ACTION_BOOT_COMPLETED broadcast, enabling re-registration of intents. Use the ApplicationStartInfo.wasForceStopped() method to check if your app was force-stopped.

Support for 16 KB Page Sizes

Android 15 introduces support for devices with 16 KB memory page sizes, optimizing performance for devices with larger RAM. If your app uses NDK libraries, you'll need to rebuild it to work on 16 KB devices. This ensures compatibility and unlocks performance benefits.

Benefits

  • Faster app launches
  • Improved memory efficiency
  • Better overall system performance

Action required

  • Rebuild NDK libraries for 16 KB compatibility
  • Test your app on devices with 16 KB page sizes
  • Update your build configuration if necessary

Private Space Changes

Android 15 introduces Private Space, allowing users to separate sensitive apps with additional authentication. Some apps require changes to interact with apps in Private Space.

Required Changes for:

All Apps

Apps in Private Space use separate user profiles. Update your app's logic to avoid assuming non-main profile installs are work profiles.

Medical Apps

Private Space locking disables foreground/background activities, including notifications, for apps within. Medical apps relying on critical notifications should assess impact and inform users to avoid installing in Private Space.

Launcher apps

If you develop a launcher app, you must do the following before apps in the private space will be visible:

  • Assign default launcher role (ROLE_HOME)
  • Declare ACCESS_HIDDEN_PROFILES permission in your app's manifest file
  • Create separate launcher container
  • Determine user profile type (getLauncherUserInfo)

App store apps

To receive the 'Install Apps' intent from Private Space, declare an intent filter with CATEGORY_APP_MARKET in your app's manifest file.

Changes to Emoji Font Support

Android removes legacy PNG-based emoji font (NotoColorEmojiLegacy.ttf). Update your app to use vector-based font or platform APIs for text rendering. To determine if your app will be impacted, search your code for references to NotoColorEmojiLegacy.ttf. You can choose to adapt your app in a number of ways:

  • Use Platform APIs: Leverage platform text rendering APIs for seamless integration
  • Render Text to Bitmap: Use a Canvas to render text and obtain a raw image when needed
  • Add COLRv1 Font Support: Integrate FreeType library (version 2.13.0+) for COLRv1 compatibility
  • Bundle Legacy Emoji Font (Last Resort): Include NotoColorEmoji.ttf in your APK, but note that your app will miss out on latest emoji updates

Minimum Target SDK Requirements

Android 15 builds upon the security foundation established in Android 14, further strengthening protections for users. In Android 15, apps with a targetSdkVersion lower than 24 can no longer be installed. Android 15 requires apps to target API level 24 or higher to ensure:

  • Enhanced security protections
  • Modern API usage
  • Better user experience
  • Compliance with current standards

Attempting to install an app targeting a lower API level results in an installation failure, with a message like the following one appearing in Logcat:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7

Camera and Media Changes

Improved Audio Resource Management

Prior to Android 15, apps would fail to open a new AudioTrack when resource limits were reached during direct or offload audio playback. In Android 15, when resource limits are reached, the system will now invalidate existing open AudioTrack objects to accommodate new direct or offload playbook requests. Direct and offload audio tracks are used for:

  • Compressed audio playback (e.g., streaming encoded audio over HDMI to TV)
  • High-quality audio streaming
  • Low-latency audio processing

Key Benefits:

  • Better resource utilization
  • More reliable audio playback
  • Improved user experience for audio apps

Developer Impact:

  • Apps requesting direct or offload playback may experience AudioTrack invalidation when resource limits are reached
  • Ensure your app handles AudioTrack invalidation and re-creation gracefully
  • Implement proper error handling for audio resource management

Enhanced Predictive Back Animations

Starting with Android 15, predictive back animations are now enabled by default for apps that have opted into the predictive back gesture, either fully or at the activity level. This change eliminates the need for the developer option, and system animations such as back-to-home, cross-task, and cross-activity will now be visible for these apps.

Ensure seamless integration with predictive back navigation:

  • Test your app's back navigation behavior
  • Verify animations work correctly across all activities
  • Update any custom back handling logic if necessary

Force-Stopping Apps Now Affects Widgets

Starting with Android 15, force-stopping an app temporarily disables its widgets. When a user force-stops an app, the system:

  • Disables all widgets associated with the app
  • Grays out widget UI elements
  • Cancels all pending intents
  • Suspends widget functionality until app restart

When the user launches the app again, the system re-enables the widgets, restoring full functionality.

Enhanced User Privacy

Media Projection Status Bar Chip

Android 15 introduces a prominent status bar chip to alert users to ongoing screen sharing, casting, or recording, addressing potential privacy risks. Users can tap the chip to stop their screen from being shared, cast, or recorded. For added convenience and security, screen projection now automatically suspends when your device screen locks.

Check if your app is impacted

By default, your app includes the new status bar chip and automatically suspends screen projection when the lock screen activates. Ensure seamless functionality by implementing the MediaProjection.Callback onStop() method and verifying your app's response to:

  • Screen lock events
  • Status bar chip interactions
  • Automatic projection suspension
  • User-initiated projection termination

These Android 15 behavior changes represent significant updates that all developers need to consider when building or updating their applications. Understanding these changes will help ensure your apps continue to function properly and provide the best possible user experience on Android 15 devices.