Android 16 'Baklava' Preview: Key Features for App Developers
Google has dropped the early developer preview for the next major release of its mobile operating system: Android 16, codenamed Baklava. Shifting from historical release schedules, the development lifecycle has been accelerated, prompting developers to prepare their apps earlier in the calendar year.
In this post, we explore the major API changes, new system-level capabilities, and key deprecations that Android developers must address immediately to target Android 16.
Accelerated Release Cycles
Why the early preview? Google is aligning Android platform releases closer to device launch windows, meaning Android 16 is slated for consumer release much earlier in 2026. Developers targeting APIs 35 and 36 will face a shorter testing window, making proactive integration of SDK 36 preview crucial.
Key Developer APIs & Features
Android 16 focuses heavily on user privacy, advanced media processing, and tighter integration with on-device machine learning architectures.
1. Advanced Photo Picker Integration
The system Photo Picker is now mandatory for media selections, deprecating standard read storage permissions further. Android 16 introduces custom actions inside the picker interface, allowing apps to inject custom buttons directly:
val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply {
putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, 5)
// New Android 16 API to inject custom action bar buttons
putExtra(MediaStore.EXTRA_PICK_IMAGES_CUSTOM_ACTION, "Add to Shared Album")
}
startActivityForResult(intent, PHOTO_PICKER_REQUEST_CODE)
2. High Dynamic Range (HDR) Layouts
With HDR display penetration at an all-time high, Android 16 introduces fine-grained HDR canvas drawing support. Custom views can now scale luminance levels programmatically to match modern dynamic range displays:
if (Build.VERSION.SDK_INT >= 36) {
window.colorMode = ActivityInfo.COLOR_MODE_HDR10
// Dynamic control over peak white levels in custom canvas
window.setPreferMinimalPostProcessing(true)
}
3. Dynamic App Archiving Controls
Android 16 moves app archiving from a launcher-managed feature to developer-controlled API. Apps can now prompt the OS to archive unused modular assets dynamically, freeing up user space while retaining critical local databases and cache structures:
val packageInstaller = context.packageManager.packageInstaller
// Programmatically request partial asset archiving
packageInstaller.requestArchiveAssetPack("extra_textures_pack") { success ->
if (success) Log.d("Android16", "Archived optional assets successfully")
}
How to Get Started with the Android 16 Preview
To compile against Android 16, update your app’s Gradle configurations:
android {
compileSdkPreview = "Baklava"
defaultConfig {
minSdk = 26
targetSdkPreview = "Baklava"
}
}
Use Android Studio Ladybug or later to configure virtual device images running the “Baklava” emulator build. Keep a sharp eye on behavior changes around background execution limits and notify permissions!