Изменения в поведении: приложения для Android 16 или более поздней версии.

Как и предыдущие выпуски, Android 16 включает изменения в поведении, которые могут повлиять на ваше приложение. Следующие изменения поведения применяются исключительно к приложениям, предназначенным для Android 16 или более поздней версии. Если ваше приложение ориентировано на Android 16 или более поздней версии, вам следует изменить его так, чтобы оно поддерживало такое поведение, если это применимо.

Обязательно ознакомьтесь также со списком изменений поведения, которые влияют на все приложения, работающие на Android 16, независимо от targetSdkVersion вашего приложения.

Пользовательский опыт и системный интерфейс

Android 16 (уровень API 36) включает следующие изменения, призванные создать более последовательный и интуитивно понятный пользовательский интерфейс.

Отключение от края до края прекращается

Android 15 强制为以 Android 15(API 级别 35)为目标平台的应用启用边到边,但您的应用可以通过将 R.attr#windowOptOutEdgeToEdgeEnforcement 设为 true 来选择停用。对于以 Android 16 为目标平台的应用,R.attr#windowOptOutEdgeToEdgeEnforcement 已废弃并处于停用状态,并且您的应用无法选择停用全屏显示。

如需在 Android 16 Beta 版 2 中进行测试,请确保您的应用支持边到边,并移除对 R.attr#windowOptOutEdgeToEdgeEnforcement 的任何使用。如需支持边到边,请参阅 ComposeView 指南。如有疑虑,请在反馈页面上通过问题跟踪器与我们联系。

Для прогнозного возврата требуется миграция или отказ

Для приложений, ориентированных на Android 16 или более поздней версии и работающих на устройстве Android 16 или более поздней версии, прогнозируемая системная анимация (возврат домой, перекрестная задача и перекрестная активность) включена по умолчанию. Кроме того, onBackPressed не вызывается и KeyEvent.KEYCODE_BACK больше не отправляется.

Если ваше приложение перехватывает обратное событие и вы еще не перешли на предиктивную обратную навигацию, обновите свое приложение, чтобы оно использовало поддерживаемые API обратной навигации . или временно отказаться, установив для атрибута android:enableOnBackInvokedCallback значение false в теге <application> или <activity> файла AndroidManifest.xml вашего приложения.

Прогнозирующая анимация возвращения домой.
Прогнозирующая анимация перекрестной активности.
Прогнозирующая анимация перекрестных задач.

API-интерфейсы элегантных шрифтов устарели и отключены.

以 Android 15(API 级别 35)为目标平台的应用的 elegantTextHeight TextView 属性默认设置为 true,从而将紧凑字体替换为更易于阅读的字体。您可以通过将 elegantTextHeight 属性设置为 false 来替换此设置。

Android 16 弃用了 elegantTextHeight 属性,并且在您的应用以 Android 16 为目标平台后,系统会忽略该属性。这些 API 控制的“界面字体”即将停用,因此您应调整所有布局,以确保以阿拉伯语、老挝语、缅甸语、泰米尔语、古吉拉特语、卡纳达语、马拉雅拉姆语、奥里亚语、泰卢固语或泰语呈现一致且可持续的文字。

对于以 Android 14(API 级别 34)及更低版本为目标平台的应用,或者对于通过将 elegantTextHeight 属性设置为 false 而替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight 行为。
对于以 Android 16 为目标平台的应用,或者对于未通过将 elegantTextHeight 属性设置为 false 来替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight 行为。

Основная функциональность

Android 16 (уровень API 36) включает следующие изменения, которые изменяют или расширяют различные основные возможности системы Android.

Оптимизация планирования работы с фиксированной ставкой

До ориентации на Android 16, когда scheduleAtFixedRate пропускало выполнение задачи из-за того, что оно находилось за пределами допустимого жизненного цикла процесса , все пропущенные выполнения выполнялись немедленно, когда приложение возвращалось к допустимому жизненному циклу.

При настройке Android 16 не более одного пропущенного выполнения scheduleAtFixedRate выполняется немедленно, когда приложение возвращается к допустимому жизненному циклу. Ожидается, что это изменение поведения улучшит производительность приложения. Проверьте это поведение в своем приложении, чтобы проверить, не затронуто ли оно ваше приложение. Вы также можете протестировать, используя платформу совместимости приложений и включив флаг совместимости STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS .

Форм-факторы устройств

Android 16 (уровень API 36) включает следующие изменения для приложений, отображаемых на устройствах с большим экраном.

Адаптивные макеты

现在,Android 应用可在各种设备(例如手机、平板电脑、可折叠设备、桌面设备、汽车和电视)上运行,并且在大屏设备上支持多种窗口模式(例如分屏和桌面窗口模式),因此开发者应构建能够适应任何屏幕和窗口大小的 Android 应用,无论设备屏幕方向如何。在当今的多设备时代,限制屏幕方向和尺寸调整等范式过于严格。

忽略屏幕方向、尺寸可调整性和宽高比限制

对于以 Android 16 为目标平台的应用,Android 16 对系统管理屏幕方向、尺寸调整和宽高比限制的方式进行了更改。在最小宽度大于等于 600dp 的显示屏上,这些限制不再适用。无论宽高比或用户的首选屏幕方向如何,应用都会填满整个显示窗口,并且不会使用信箱模式。

此变更引入了新的标准平台行为。Android 正在朝着一种模式发展,即应用应适应各种屏幕方向、显示大小和宽高比。固定屏幕方向或尺寸可调整性受限等限制会妨碍应用自适应,因此我们建议让应用自适应,以提供尽可能出色的用户体验。

您还可以使用 [应用兼容性框架][a16-kilo-14] 并启用 UNIVERSAL_RESIZABLE_BY_DEFAULT 兼容性标志来测试此行为。

常见的破坏性更改

忽略屏幕方向、可调整大小和宽高比限制可能会影响应用在某些设备上的界面,尤其是针对锁定在纵向模式的小布局设计的元素:例如,拉伸的布局、屏幕外动画和组件等问题。对宽高比或屏幕方向做出的任何假设都可能会导致应用出现视觉问题。详细了解如何避免这些问题并改进应用的自适应行为。

允许设备旋转会导致重新创建更多 activity,如果未正确保留用户状态,可能会导致丢失用户状态。如需了解如何正确保存界面状态,请参阅保存界面状态

实现细节

在大屏设备上,以下清单属性和运行时 API 会在全屏和多窗口模式下被忽略:

系统会忽略 screenOrientationsetRequestedOrientation()getRequestedOrientation() 的以下值:

  • portrait
  • reversePortrait
  • sensorPortrait
  • userPortrait
  • landscape
  • reverseLandscape
  • sensorLandscape
  • userLandscape

关于显示屏可调整大小,android:resizeableActivity="false"android:minAspectRatioandroid:maxAspectRatio 没有任何影响。

对于以 Android 16 为目标平台的应用,系统会默认在大屏设备上忽略应用屏幕方向、可调整大小和宽高比约束条件,但每个尚未完全准备就绪的应用都可以通过选择停用来暂时替换此行为(这会导致之前将应用置于兼容模式的行为)。

异常

在以下情况下,Android 16 的屏幕方向、尺寸调整和宽高比限制不适用:

  • 游戏(基于 android:appCategory 标志)
  • 用户在设备的宽高比设置中明确选择启用应用的默认行为
  • 小于 sw600dp 的屏幕

暂时停用

如需停用特定 activity,请声明 PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY 清单属性:

<activity ...>
  <property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
  ...
</activity>

如果应用的太多部分不支持 Android 16,您可以在应用级别应用相同的属性,以完全停用该功能:

<application ...>
  <property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>

Здоровье и фитнес

Android 16 (уровень API 36) включает следующие изменения, связанные с данными о здоровье и фитнесе.

Разрешения для здоровья и фитнеса

Для приложений, предназначенных для Android 16 или более поздних версий, разрешения BODY_SENSORS переходят на детальные разрешения в разделе android.permissions.health , также используемые Health Connect . Любой API, ранее требующий BODY_SENSORS или BODY_SENSORS_BACKGROUND , теперь требует соответствующего разрешения android.permissions.health . Это влияет на следующие типы данных, API и типы служб переднего плана:

Если ваше приложение использует эти API, теперь оно должно запрашивать соответствующие подробные разрешения:

  • Для мониторинга сердечного ритма, SpO2 или температуры кожи во время использования: запросите детальное разрешение в android.permissions.health , например READ_HEART_RATE вместо BODY_SENSORS .
  • Для доступа к фоновому датчику: запросите READ_HEALTH_DATA_IN_BACKGROUND вместо BODY_SENSORS_BACKGROUND .

Эти разрешения такие же, как и те, которые защищают доступ к чтению данных из Health Connect , хранилища данных Android для данных о здоровье, фитнесе и самочувствии.

Мобильные приложения

Мобильные приложения, мигрирующие для использования READ_HEART_RATE и других детальных разрешений, также должны объявить действие для отображения политики конфиденциальности приложения. Это то же требование, что и для Health Connect.

Возможности подключения

Android 16 (уровень API 36) включает следующие изменения в стеке Bluetooth для улучшения связи с периферийными устройствами.

Новые намерения справиться с потерями облигаций и изменениями в шифровании

В рамках улучшенной обработки потерь по облигациям в Android 16 также представлены две новые функции, позволяющие приложениям лучше понимать потери по облигациям и изменения в шифровании.

Приложения, ориентированные на Android 16, теперь могут:

  • Получать намерение ACTION_KEY_MISSING при обнаружении удаленной потери связи, что позволяет им предоставлять более информативную обратную связь с пользователем и предпринимать соответствующие действия.
  • Получайте намерение ACTION_ENCRYPTION_CHANGE при каждом изменении статуса шифрования ссылки. Сюда входит изменение статуса шифрования, изменение алгоритма шифрования и изменение размера ключа шифрования. Приложения должны считать связь восстановленной, если ссылка успешно зашифрована после получения намерения ACTION_ENCRYPTION_CHANGE позже.

Если ваше приложение в настоящее время использует специальные механизмы обработки потерь по облигациям, перейдите на новое намерение ACTION_KEY_MISSING для обнаружения и управления событиями потери по облигациям. Мы рекомендуем, чтобы ваше приложение помогало пользователю убедиться, что удаленное устройство находится в зоне действия, прежде чем начинать забывание устройства и повторное сопряжение.

Более того, если устройство отключается после получения намерения ACTION_KEY_MISSING , вашему приложению следует помнить о повторном подключении к устройству, поскольку это устройство больше не может быть связано с системой.

,

В рамках улучшенной обработки потерь по облигациям в Android 16 также представлены две новые функции, позволяющие приложениям лучше понимать потери по облигациям и изменения в шифровании.

Приложения, ориентированные на Android 16, теперь могут:

  • Получать намерение ACTION_KEY_MISSING при обнаружении удаленной потери связи, что позволяет им предоставлять более информативную обратную связь с пользователем и предпринимать соответствующие действия.
  • Получайте намерение ACTION_ENCRYPTION_CHANGE при каждом изменении статуса шифрования ссылки. Сюда входит изменение статуса шифрования, изменение алгоритма шифрования и изменение размера ключа шифрования. Приложения должны считать связь восстановленной, если ссылка успешно зашифрована после получения намерения ACTION_ENCRYPTION_CHANGE позже.

Если ваше приложение в настоящее время использует специальные механизмы обработки потерь по облигациям, перейдите на новое намерение ACTION_KEY_MISSING для обнаружения и управления событиями потери по облигациям. Мы рекомендуем, чтобы ваше приложение помогало пользователю убедиться, что удаленное устройство находится в зоне действия, прежде чем начинать забывание устройства и повторное сопряжение.

Более того, если устройство отключается после получения намерения ACTION_KEY_MISSING , вашему приложению следует помнить о повторном подключении к устройству, поскольку это устройство больше не может быть связано с системой.

,

В рамках улучшенной обработки потерь по облигациям в Android 16 также представлены две новые функции, позволяющие приложениям лучше понимать потери по облигациям и изменения в шифровании.

Приложения, ориентированные на Android 16, теперь могут:

  • Получать намерение ACTION_KEY_MISSING при обнаружении удаленной потери связи, что позволяет им предоставлять более информативную обратную связь с пользователем и предпринимать соответствующие действия.
  • Получайте намерение ACTION_ENCRYPTION_CHANGE при каждом изменении статуса шифрования ссылки. Сюда входит изменение статуса шифрования, изменение алгоритма шифрования и изменение размера ключа шифрования. Приложения должны считать связь восстановленной, если ссылка успешно зашифрована после получения намерения ACTION_ENCRYPTION_CHANGE позже.

Если ваше приложение в настоящее время использует специальные механизмы обработки потерь по облигациям, перейдите на новое намерение ACTION_KEY_MISSING для обнаружения и управления событиями потери по облигациям. Мы рекомендуем, чтобы ваше приложение помогало пользователю убедиться, что удаленное устройство находится в зоне действия, прежде чем начинать забывание устройства и повторное сопряжение.

Более того, если устройство отключается после получения намерения ACTION_KEY_MISSING , вашему приложению следует помнить о повторном подключении к устройству, поскольку это устройство больше не может быть связано с системой.

,

В рамках улучшенной обработки потерь по облигациям в Android 16 также представлены две новые функции, позволяющие приложениям лучше понимать потери по облигациям и изменения в шифровании.

Приложения, ориентированные на Android 16, теперь могут:

  • Получать намерение ACTION_KEY_MISSING при обнаружении удаленной потери связи, что позволяет им предоставлять более информативную обратную связь с пользователем и предпринимать соответствующие действия.
  • Получайте намерение ACTION_ENCRYPTION_CHANGE при каждом изменении статуса шифрования ссылки. Сюда входит изменение статуса шифрования, изменение алгоритма шифрования и изменение размера ключа шифрования. Приложения должны считать связь восстановленной, если ссылка успешно зашифрована после получения намерения ACTION_ENCRYPTION_CHANGE позже.

Если ваше приложение в настоящее время использует специальные механизмы обработки потерь по облигациям, перейдите на новое намерение ACTION_KEY_MISSING для обнаружения и управления событиями потери по облигациям. Мы рекомендуем, чтобы ваше приложение помогало пользователю убедиться, что удаленное устройство находится в зоне действия, прежде чем начинать забывание устройства и повторное сопряжение.

Более того, если устройство отключается после получения намерения ACTION_KEY_MISSING , вашему приложению следует помнить о повторном подключении к устройству, поскольку это устройство больше не может быть связано с системой.

Безопасность

Android 16 (уровень API 36) включает следующие изменения безопасности.

Блокировка версии MediaStore

对于以 Android 16 或更高版本为目标平台的应用,MediaStore#getVersion() 现在将是每个应用的唯一标识。这会从版本字符串中移除标识属性,以防止滥用和用于指纹识别技术。应用不应对此版本的格式做出任何假设。在使用此 API 时,应用应已处理版本变更,并且在大多数情况下无需更改其当前行为,除非开发者尝试推断超出此 API 预期范围的其他信息。