Every Android beta and quarterly platform release (QPR) ships changes that affect how organisations manage their devices. Most of the official documentation is aimed at app developers, and the underlying framework changes go entirely undocumented until they surface in a stable release months later.
This tracker fills the gap. Each entry below covers a single build and summarises what changed for enterprise management - focusing on what device policy controller (DPC) apps will be able to do, followed by broader platform changes that IT teams and EMM vendors should be aware of. Where a feature is still gated behind a flag or marked provisional, the entry says so.
The source data comes from automated firmware teardowns comparing successive builds of the DevicePolicyManager framework, enterprise apps, permissions, and related platform components. For full technical detail on a given release, see the corresponding "new in Android for enterprise" reports, such as New in Android 17 for enterprise and New in Android 16 for enterprise.
How to read the status labels:
true in the beta track; expected to shipfalse; may change before stableThese reports are generated with the assistance of AI, AI tears the respective build(s) down and extracts relevant data, with evidence. This is then reviewed and reported. Due to the nature of pulling factory OTAs and images apart, I won't ever claim 100% accuracy of the reports. Nor do I guarantee reported items will reach production builds; in fact following Google's move to trunk stable development, it will be very normal to catch previews of things that may not ship for several releases.
View a specific channel: Beta | Canary | Stable
Track: Canary | Predecessor: Canary 5 | Note: canary builds are forward-looking and may not ship in the next stable release
A policy expansion canary that adds nine new flags, lands task continuity handoff enforcement, and refactors the network logging handler for thread safety.
DPC capabilities
false, covering device controller reboot (allowDeviceControllerReboot), security logging for login attempts and package failures, policy streamlining for support messages, first-use hints, and task continuity handoff, plus multi-user and network log streaming scaffolding. These are new on the canary track - several also appeared independently on QPR2 BetaCrossDevice.TASK_CONTINUITY_HANDOFF handler landed in PolicyHandlerFactory, mapping the policyStreamliningTaskContinuityHandoff flag to the no_task_continuity_handoff user restriction. This completes the enforcement plumbing for controlling cross-device task handoff via the typed policy enginekeychainSuppressCertificateSelections flipped from true back to false. This had been enabled on canary since canary 4; the rollback suggests the feature needs further work before graduationOther enterprise changes
NetworkLoggingHandler was rewritten from synchronized blocks to a handler-thread-only pattern with checkHandlerThread() assertions. All public methods now post to the handler thread. This improves batch collection reliability but is not a feature change - canary remains batch-only for network loggingnotifyDeviceOwnerOrProfileOwner() renamed to notifyDeviceManagementApp(), reflecting the shift from device owner/profile owner to the broader device management app conceptisHeadlessSystemUserLoginScreen() method for detecting HSU-as-login-screen configuration. Still behind a test flagServiceSpecificException instead of UnsupportedHardwareException, aligning with standard Android service error patternsisRecursiveRequiredAppMergingEnabled remains enabled on canary, carrying forward from canary 5Cross-track note: the canary and QPR2 Beta tracks continue to diverge in several areas. The beta track has streaming network log scaffolding, content capture and Wi-Fi Direct typed policies, and an affiliation ID permission gate that are not present on canary. Conversely, canary carries crossUserSuspensionEnabledRo and isRecursiveRequiredAppMergingEnabled at true whilst the beta track still has them gated. The kiosk user type naming also differs - canary uses USER_TYPE_FULL_KIOSK, beta uses USER_TYPE_FULL_DEDICATED_TASK. These are independent branch choices, not directional changes.
Track: QPR2 Beta | Predecessor: QPR2 Beta 4 | Milestone: December 2026 stable
The kiosk user type gets a rename with broader semantics, three new typed policies extend the streamlining effort, and device controllers gain scaffolding for programmatic reboots.
DPC capabilities
Other enterprise changes
Track: QPR2 Beta | Predecessor: QPR2 Beta 3 | Milestone: December 2026 stable
Platform stability reached. The enterprise API surface is frozen. What ships in this build ships in the December 2026 stable QPR2 release.
DPC capabilities
Other enterprise changes
Track: QPR2 Beta | Predecessor: QPR2 Beta 2 | Milestone: December 2026 stable
Three enterprise flags graduated to enabled, and the DLP rules framework gained its set/get API.
Flag graduations
Three flags moved from provisional to enabled in this build:
policyStreamlining) - the master switch for the new type-safe policy interface is now on. DPC apps will be able to use setPolicy and getPolicy with proper typed identifiers and built-in multi-admin conflict resolutionmanagedEsimOutgoingTransferPolicy) - DPC apps can now query whether an eSIM profile is allowed to be transferred off a managed devicedpmSecurityLevelWpaOnly) - administrators can enforce WPA as the minimum Wi-Fi security standard, blocking connections to open or WEP networksDPC capabilities
Other enterprise changes
Track: Canary | Predecessor: Canary 4 | Note: canary builds are forward-looking and may not ship in the next stable release
Introduces the registered app store role and content restriction enforcement.
DPC capabilities
DISALLOW_INSTALL_UNKNOWN_SOURCES_INCLUDING_REGISTERED_APP_STORES restriction (landed in QPR2 Beta 3), giving administrators a stricter sideloading option that also blocks registered storesOther enterprise changes
PolicyHandler, PolicyValidator, and PolicyHandlerFactory classes replace inline policy logic, moving toward a cleaner typed handler lifecyclePOLICY_SCOPE_LOGIN_SCREEN = 4 landed in QPR2 Beta 1)Track: QPR2 Beta | Predecessor: QPR2 Beta 1 | Milestone: December 2026 stable
Security logging decomposition, scoped certificate management, and policy engine expansion.
DPC capabilities
Other enterprise changes
Track: QPR2 Beta | Predecessor: Android 17 QPR1 stable | Milestone: December 2026 stable
The first QPR2 build, with a notable architectural change to the policy engine and several new policy areas.
DPC capabilities
isOutgoingEsimTransferAllowed, clarifying its purposeOther enterprise changes
enforcingAdminExtraEnabled, enforcingAdminGetComponentNameEnabled, and setTimeCoexistenceLOCKSCREEN to LOCK_SCREEN)Track: QPR1 Beta | Predecessor: QPR1 Beta 6 | Milestone: September 2026 stable
The final QPR1 beta before stable, focusing on physical media, tethering policies, and certificate management improvements.
DPC capabilities
no_physical_media restriction with proper multi-admin resolutionOther enterprise changes
Branding namespace, improving organisation for branding-related policiesAdvancedSecurityOverrides with proper typed allowed/disallowed constantsTrack: QPR1 Beta | Predecessor: QPR1 Beta 5 | Milestone: September 2026 stable
Introduces real-time policy change callbacks and scoped key generation.
DPC capabilities
Other enterprise changes
Track: QPR1 Beta | Predecessor: QPR1 Beta 4 | Milestone: September 2026 stable
One of the largest enterprise builds tracked so far. Introduces the data leak prevention framework, policy namespace classes, scoped certificate management, and the foundation for policy engine V2.
DPC capabilities
Other enterprise changes
AdvancedSecurityOverrides, DeviceConnectivityManagement, and DateTime group related policies together, rather than keeping them all in a flat list. This is a structural improvement that scales to the volume of policies expected as Android and ChromeOS management convergepolicyEngineV2 flag and 27 per-policy migration flags appeared, all still off. These gate the next generation of the policy engine that will handle routing policies through either the V1 or V2 pathSTATUS_HEADLESS_SYSTEM_USER_MODE_REQUIRED constant was renamed to STATUS_INCOMPATIBLE_OS_BUILD, broadening its meaning beyond headless modeTrack: Stable | Predecessor: Android 16 Stable (April)
The first stable Android 17 release. This is a cross-version comparison against Android 16 - every difference is a genuine version change, not a beta progression. The headline story is the typed policy engine and multi-user device provisioning, both of which ship in this release with their API surfaces live.
Multi-admin typed policy engine
setPolicy, getPolicy, getResolvedDeviceWidePolicy, and getResolvedPerUserPolicy with typed PolicyIdentifier<T> parameters. The engine mediates policy conflicts between multiple admins automatically. Eleven typed policies are defined: screen capture, auto-time, auto-timezone, eSIM outgoing transfer, lockscreen message, content restriction apps, app install, app uninstall, easter eggs, factory reset, and Bluetooth sharing. The API surface is live, but individual policy-streamlining flags remain gated at false - expect enablement in QPR releasessetCrossProfileWidgetProviders(Set) is now live. DPCs can set all cross-profile widget providers in a single bulk call rather than adding and removing packages individuallyfalse. These will progressively activate as the legacy DPM methods migrate to the typed engineMulti-user device management
provisionMultiuserManagedDevice() and provisionMultiuserManagedUser() to set up shared-device scenarios - kiosks, frontline workers, education labsDEVICE_CONTROLLER role, lighter than device owner, purpose-built for shared-device controllers. It grants permissions for content protection, debugging features, input methods, lockscreen messages, organisation identity, safe boot, and time setting. Gated by multiUserManagementDeviceProvisioningMultiUser to Multiuser casing. DPCs referencing the old action strings (ACTION_PROVISION_MULTI_USER_DEVICE) should update to ACTION_PROVISION_MULTIUSER_MANAGED_DEVICEUser restrictions
DISALLOW_ADD_GUEST restriction lets DPCs explicitly block guest user creation without the broader DISALLOW_ADD_USERDISALLOW_TASK_CONTINUITY_HANDOFF replaces the A16 DISALLOW_HANDOFF with a clearer name. DPCs should migrate - the old restriction string is removedhasBadge() now returns true for user 0 in headless system user mode, improving app management UX on HSU devicesDPM role holder changes
COPY_ACCOUNTS and REMOVE_ACCOUNTS (gated by splitCreateManagedProfileEnabled), supporting managed profile creation workflowsACCESS_BIOMETRIC_SENSOR_STRENGTHS added to DPM, system activity, and wallet rolesDISCOVER_APP_FUNCTIONS and EXECUTE_APP_FUNCTIONS_SYSTEM added to the system activity and DPM rolesSHOW_POWER_MENU permission added to the assistant and DPM roles (gated by statusbarApiShowPowerMenu)Other enterprise changes
FeatureFlags/FeatureFlagsImpl runtime delegation layer was removed. All admin flags are now hardcoded static methods in the stable image - no runtime override possibleenableNullableAdminComponent shipped true, replacing the A16 dontWriteIsSystemAuthority flag. Allows admin components to be null in policy engine records, supporting role-based management without a concrete DeviceAdminReceivercanAddPrivateProfile() now uses a simpler check, removing multiple legacy flag guardscanAddMoreUsersLegacy() deleted from UserManager; the consistentMaxUsers flag is now assumed truePolicyHandler/PolicyHandlerFactory/PolicyValidator framework landed in the device policy service. This is the typed handler lifecycle that replaces inline DPMS logic and will scale as more policies migrateexpandAppStreamingRolePermissions)LOCK_APPS permission, gated by appLockApis, enabling launcher-level app lockingMANAGE_SUPERVISION (gated by enableSupervisionManagerPolicyApis)Track: QPR1 Beta | Predecessor: QPR1 Beta 3 | Milestone: September 2026 stable
Introduces the device controller concept, content safety apps rename, and WPA enforcement constant.
DPC capabilities
Other enterprise changes
addUserInfoInProfileOffDeadlineAlarm, checkPersonalSuspensionForAllProfiles, and wipeDeviceWhenUserCannotBeRemovedassociateDisallowGrantAdminWithPermission and unsuspendNotSuspendedTrack: Canary | Predecessor: Canary 3 | Note: canary builds are forward-looking and may not ship in the next stable release
Significant build that introduces scaffolding for device admin deprecation and expands the policy metadata system.
DPC capabilities
isDeviceAdminFeatureDisabled() check, all returning false for now. This is preparation for eventually disabling the legacy device admin APIRoleManager reference, adding role-based management alongside traditional owner-based managementOther enterprise changes
addUserInfoInProfileOffDeadlineAlarm, checkPersonalSuspensionForAllProfiles, crossUserSuspensionEnabledRo, and others moved to enabled in the canary trackhasAffiliationWithDevice and isDeviceProvisioned moved to an internal interface, cleaning up the public API surfacepolicyStreamliningTests flag used for internal validation was removedTrack: A17 Beta | Predecessor: A17 Beta 4 | Milestone: June 2026 stable
A patch release that rolled back several flags to their safer defaults on the stable track.
What changed
increaseWatchStrongAuthTimeout, introduceGenericProvisioningError, and useHardenedFrpActiveCheck were all set back to disabled on the stable track. These remained enabled in the canary and QPR1 tracks, meaning the stable Android 17 release shipped without them while they continue development in quarterly releasesenterpriseEsimUsingCarrierPrivileges flag was re-added as enabled after being removed in earlier buildsThis build illustrates how the stable, QPR, and canary tracks can diverge: features that are enabled in QPR and canary builds get rolled back on the stable track when they need more baking time.
Track: QPR1 Beta | Predecessor: QPR1 Beta 2 | Milestone: September 2026 stable
Adds typed policy engine flags for several common restrictions and restores features that had been removed in the canary track.
DPC capabilities
Other enterprise changes
Track: Canary | Predecessor: Canary 2 | Note: canary builds are forward-looking and may not ship in the next stable release
A lighter build focused on private DNS refactoring and overlay resource improvements.
DPC capabilities
Other enterprise changes
#import: directives, allowing one list to reference another. This enables cleaner configuration management for OEMs and enterprise deployments with complex overlay hierarchiesTrack: QPR1 Beta | Predecessor: QPR1 Beta 1 | Milestone: September 2026 stable
Introduces the kiosk user type, device controller role permissions, and assist content policy.
DPC capabilities
Other enterprise changes
USER_TYPE_FULL_KIOSK user type appeared, designed specifically for kiosk device management. This mirrors the kiosk app mode available on ChromeOSTrack: QPR1 Beta | Predecessor: Android 17 stable | Milestone: September 2026 stable
The first QPR1 build, laying groundwork for clipboard policy, factory reset protection improvements, and the policy serialisation framework.
DPC capabilities
Other enterprise changes
Track: Canary | Predecessor: A16 QPR3 Canary 1 | Note: canary builds are forward-looking and may not ship in the next stable release
Establishes the multi-user provisioning state machine and moves supervision APIs to a dedicated manager.
DPC capabilities
Other enterprise changes
DevicePolicyManager to a dedicated SupervisionManager, with feature flags controlling the migration. This cleans up the DPM API surfacePolicyDefinitionFactory.buildAll() landed for metadata-driven policy registration, alongside EnumStoredAsBooleanPolicyHandler for handling enum policies backed by boolean storage. These are foundational policy engine componentsTrack: A17 Beta | Milestone: June 2026 stable
The near-final Android 17 beta, carrying the typed policy engine (present since earlier betas) and cleaning up legacy APIs.
DPC capabilities
setPolicy, getPolicy, getResolvedDeviceWidePolicy, and getResolvedPerUserPolicy are present with typed PolicyIdentifier parameters and built-in multi-admin resolution. These carry @FlaggedApi at API 10000 (provisional) and will ship when the backing flags graduateOther enterprise changes
PackageIdentifier and PackagePolicyValue landed, providing strongly typed infrastructure for policies that operate on specific packagesdeviceOwnerForAll, fixDisabledByAdminShortMessageNotShown, fixUsbDataSignalingRestrictionAfterRebootTrack: Android 16 stable | Note: this is the baseline build used for comparison when tracking Android 17 changes
The Android 16 April stable release serves as the comparison baseline for this tracker. Enterprise-relevant items here represent the stable production state against which Android 17 beta changes are measured.
Key enterprise state at this baseline
clearPolicy, getIntegerPolicy) was present. This approach was superseded by the typed PolicyIdentifier approach in Android 17DISALLOW_HANDOFF user restriction (A16 naming) was present, later renamed to DISALLOW_TASK_CONTINUITY_HANDOFF in Android 17Track: A16 QPR3 Canary | Note: canary builds are forward-looking and may not ship in the next stable release
The earliest build tracked, running on the Pixel 7 before the tracker switched to the Pixel 10. This canary sits on the Android 16 QPR3 branch and contains forward-looking enterprise plumbing.
What appeared