На этой странице описывается каждое изменение поведения, влияющее на приложение, которое было добавлено в фреймворк совместимости в Android 11 (уровень API 30). Используйте этот список вместе с параметрами разработчика и командами ADB для тестирования и отладки вашего приложения при подготовке к переходу на Android 11.
ADD_CONTENT_OBSERVER_FLAGS
Изменить идентификатор : 150939131
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений, ориентированных на Android 11, существует новая публичная перегрузка API onChange(boolean, Uri, int)
, которая включает аргумент целочисленных flags
.
Этот новый метод представляет собой общедоступную альтернативу SDK для приложений, использующих не-SDK перегруженный метод onChange()
, включающий целочисленный аргумент userId
.
СЛОЖНОСТЬ_ПАРОЛЯ_АДМИНИСТРАТОРСКОГО_ПРИЛОЖЕНИЯ
Изменить идентификатор : 123562444
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений администратора, ориентированных на Android 11, выдавать ошибку всякий раз, когда приложение устанавливает требование к паролю, которое не соответствует текущему назначенному качеству пароля. Например, если качество пароля установлено на DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
, приложение не сможет установить минимальную длину пароля. В этом случае, прежде чем пытаться установить минимальную длину пароля, приложение должно сначала вызвать метод setPasswordQuality()
и только затем вызвать метод setPasswordMinimumLength()
.
Кроме того, когда приложение администратора, ориентированное на Android 11, снижает качество пароля, все существующие требования к паролю, которые больше не применяются, сбрасываются до значений по умолчанию.
ИЗОЛЯЦИЯ_КАТАЛОГА_ДАННЫХ_ПРИЛОЖЕНИЯ
Изменить идентификатор : 143937733
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Приложения, ориентированные на Android 11, больше не смогут получать доступ к файлам в частных каталогах данных любого приложения, независимо от целевой версии SDK другого приложения.
Более подробную информацию см. в разделе Доступ к приватным каталогам .
APN_READING_PERMISSION_CHANGE_ID
Изменить идентификатор : 124107808
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений, ориентированных на Android 11, для доступа к базе данных APN теперь требуется разрешение Manifest.permission.WRITE_APN_SETTINGS
.
Более подробную информацию об этом изменении см. в разделе Ограниченный доступ на чтение к базе данных APN .
BACKGROUND_RATIONALE_CHANGE_ID
Изменить идентификатор : 147316723
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Теперь приложения должны предоставлять обоснованное обоснование каждый раз, когда они запрашивают доступ к местоположению устройства в фоновом режиме.
Чтобы узнать больше об этом изменении, ознакомьтесь с руководством по получению доступа к фоновому местоположению в Android 11, в котором обсуждаются изменения в конфиденциальности, связанные с местоположением в Android 11.
CALLBACK_ON_CLEAR_CHANGE
Изменить идентификатор : 119147584
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Теперь при каждом вызове Editor.clear
выполняется обратный вызов OnSharedPreferenceChangeListener.onSharedPreferenceChanged
с null
ключом.
Чтобы узнать больше об этом изменении, см. Изменения обратного вызова для OnSharedPreferenceChangeListener .
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
Изменить идентификатор : 130595455
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Коды ошибок теперь расширены для updateAvailableNetworks(List, Executor, Consumer)
и setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer)
.
ПЕРЕЗВОНИТЬ_НА_ИЗМЕНЕННЫЙ_СЛУШАТЕЛЬ_С_ПЕРЕКЛЮЧЕННЫМ_ИЗМЕНЕНИЕМ
Изменить идентификатор : 148180766
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Это тонкое изменение поведения startWatchingMode(String, String, AppOpsManager.OnOpChangedListener)
. До этого изменения система перезванивала для переключенного op. После изменения система перезвонит для фактически запрошенного op или для всех переключенных op, если op не указан.
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
Изменить идентификатор : 136219221
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений, ориентированных на Android 11, службы переднего плана получают возможности камеры и микрофона во время использования только тогда, когда R.attr.foregroundServiceType
настроен как ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
и ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
соответственно в файле манифеста. В более ранних версиях Android службы переднего плана автоматически получали возможности камеры и микрофона.
Дополнительную информацию об этом изменении см. в разделе Типы приоритетных служб в Android 11 .
ИЗМЕНИТЬ_BACKGROUND_CUSTOM_TOAST_BLOCK
Изменить идентификатор : 128611929
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Приложения больше не могут публиковать пользовательские тосты в фоновом режиме. Однако приложения по-прежнему могут публиковать тосты с помощью метода Toast.makeText(Context, CharSequence, int)
и его вариантов в фоновом режиме.
Чтобы узнать больше об этом изменении, см. статью Пользовательские представления тостов заблокированы .
CHANGE_RESTRICT_SAW_INTENT
Изменить идентификатор : 135920175
Состояние по умолчанию : это изменение не может быть переключено. Оно регистрируется только фреймворком совместимости.
Намерения, использующие действие android.settings.MANAGE_APP_OVERLAY_PERMISSION
и схему URI данных package
, больше не направляют пользователя на экран, специфичный для приложения, для управления связанным разрешением. Вместо этого пользователь направляется на экран, где он может управлять всеми приложениями, запросившими разрешение.
ИЗМЕНИТЬ_ТЕКСТ_ТОСЫ_В_СИСТЕМЕ
Изменить идентификатор : 147798919
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Текстовые тосты теперь отображаются SystemUI, а не в приложении. Это не позволяет приложениям обходить ограничения на публикацию пользовательских тостов в фоновом режиме.
DEFAULT_SCOPED_STORAGE
Изменить идентификатор : 149924527
Состояние по умолчанию : включено для всех приложений.
Все приложения, ориентированные на Android 11, теперь по умолчанию используют выделенное хранилище и больше не могут отказаться от него .
Однако вы можете протестировать свое приложение без ограниченного хранилища, независимо от целевой версии SDK вашего приложения и значений флага манифеста, отключив это изменение.
Дополнительную информацию об изменениях в хранилище с ограниченным доступом в Android 11 см. в разделе «Хранилище с ограниченным доступом» на странице об изменениях в хранилище Android в Android 11.
EMPTY_INTENT_ACTION_CATEGORY
Изменить идентификатор : 151163173
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений, ориентированных на Android 11, система теперь выдает ошибку, если action
или category
фильтра намерений являются пустой строкой. Ошибка в платформе до Android 11 позволяла этому случаю проходить без выдачи ошибки. Обратите внимание, что это не включает случаи, когда атрибут равен нулю или отсутствует, поскольку это всегда выдавало ошибку.
ЗАПРОС_ПРИЛОЖЕНИЯ_ФИЛЬТРА
Изменить идентификатор : 135549675
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Теперь приложениям необходимо декларировать пакеты и намерения, которые они намерены использовать, прежде чем они смогут получить сведения о других приложениях на устройстве. Такие декларации должны быть сделаны с использованием тега <queries>
в манифесте приложения.
Дополнительную информацию о том, как запрашивать и взаимодействовать с другими установленными приложениями в Android 11, можно найти на странице конфиденциальности «Видимость пакетов» .
FORCE_ENABLE_SCOPED_STORAGE
Изменить идентификатор : Значение: 132649864
Состояние по умолчанию : отключено для всех приложений.
Все приложения, ориентированные на Android 11, теперь по умолчанию используют выделенное хранилище и больше не могут отказаться от него .
Однако, если ваше приложение по-прежнему ориентировано на Android 10 (уровень API 29) или ниже, вы можете протестировать свое приложение с ограниченным хранилищем, независимо от целевой версии SDK вашего приложения и значений флага манифеста, включив это изменение.
Дополнительную информацию об изменениях в хранилище с ограниченным доступом в Android 11 см. в разделе «Хранилище с ограниченным доступом» на странице об изменениях в хранилище Android в Android 11.
GET_DATA_CONNECTION_STATE_R_VERSION
Изменить идентификатор : 148535736
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Чтобы проверить версию SDK для PreciseDataConnectionState#getDataConnectionState
.
GET_DATA_STATE_R_VERSION
Изменить идентификатор : 148534348
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Чтобы проверить версию SDK для getDataState()
.
GET_PROVIDER_SECURITY_EXCEPTIONS
Изменить идентификатор : 150935354
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений, ориентированных на Android 11 (уровень API 30) или выше, getProvider(String)
больше не выдает никаких исключений безопасности.
GET_TARGET_SDK_VERSION_CODE_CHANGE
Изменить идентификатор : 145147528
Состояние по умолчанию : включено для приложений, предназначенных для Android 10 (уровень API 29) или выше.
Для проверки версии SDK для метода SmsManager.sendResolverResult()
.
GWP_ASAN
Изменить идентификатор : 135634846
Состояние по умолчанию : отключено для всех приложений.
Позволяет обнаруживать ошибки выборочной собственной памяти в приложениях.
Более подробную информацию об этом изменении можно найти в руководстве GWP-ASan .
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
Изменить идентификатор : 149997251
Состояние по умолчанию : включено для приложений, предназначенных для Android 10 (уровень API 29) или выше.
Для приложений, ориентированных на Android 10 (уровень API 29) или выше, удаляет доступ ко всем интерфейсам, не относящимся к SDK, которые входят в список max-target-p
( greylist-max-p
) для Android 10 (уровень API 29).
HIDE_MAXTARGETSDK_Q_HIDDEN_APIS
Изменить идентификатор : 149994052
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений, ориентированных на Android 11 (уровень API 30) или выше, удаляет доступ ко всем интерфейсам, не относящимся к SDK, которые входят в список max-target-q
( greylist-max-q
) для Android 11 (уровень API 30).
Чтобы узнать больше об этом изменении, ознакомьтесь с разделом Интерфейсы, не входящие в SDK, которые теперь заблокированы в Android 11 .
СЛУШАТЬ_КОД_ИЗМЕНЕНИЕ
Изменить идентификатор : 147600208
Состояние по умолчанию : включено для приложений, предназначенных для Android 10 (уровень API 29) или выше.
Чтобы проверить версию SDK для TelephonyManager.listen(PhoneStateListener, int)
.
MISSING_APP_TAG
Изменить идентификатор : 150776642
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений, ориентированных на Android 11, теперь возникает ошибка, если в файле манифеста приложения отсутствует тег application
или instrumentation
.
NATIVE_HEAP_POINTER_TAGGING
Изменить идентификатор : 135754954
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений, ориентированных на Android 11, собственные выделения кучи теперь имеют ненулевой тег в старшем байте.
Чтобы узнать больше, см. раздел Тегирование указателя кучи .
PHONE_STATE_LISTENER_LIMIT_CHANGE_ID
Изменить идентификатор : 150880553
Состояние по умолчанию : включено для всех приложений.
Для приложений, ориентированных на Android 11, теперь существует ограничение на количество объектов PhoneStateListener
, которые любой процесс может зарегистрировать через TelephonyManager.listen(PhoneStateListener, int)
. Ограничение по умолчанию составляет 50, и его можно изменить с помощью удаленных обновлений конфигурации устройства. Это ограничение применяется с помощью IllegalStateException
, выдаваемого TelephonyManager.listen(PhoneStateListener, int)
, когда нарушающий процесс пытается зарегистрировать слишком много слушателей.
PREVENT_META_REFLECTION_BLACKLIST_ACCESS
Изменить идентификатор : 142365358
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Приложения, ориентированные на Android 11, больше не могут использовать дополнительный уровень отражения для доступа к интерфейсам, не относящимся к SDK, которые ограничены.
PROCESS_CAPABILITY_CHANGE_ID
Изменить идентификатор : 136274596
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений, ориентированных на Android 11, флаг Context.BIND_INCLUDE_CAPABILITIES
теперь можно использовать для передачи возможностей использования из клиентского процесса в привязанную службу.
REMOVE_ANDROID_TEST_BASE
Изменить идентификатор : 133396946
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для приложений, ориентированных на Android 11, библиотека android.test.base
была удалена, если приложение не зависит от android.test.runner
(поскольку оно зависит от классов из библиотеки android.test.base
).
ЗАПРОС_ИЗМЕНЕНИЯ_КНОПКИ_ДОСТУПА
Изменить идентификатор : 136293963
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Для служб доступности, ориентированных на Android 11, флаг FLAG_REQUEST_ACCESSIBILITY_BUTTON
теперь должен быть указан в файле метаданных службы доступности. В противном случае флаг игнорируется.
Чтобы узнать больше об этом изменении, см. раздел Объявление использования кнопки специальных возможностей в файле метаданных .
RESOURCES_ARSC_COMPRESSED
Изменить идентификатор : 132742131
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Приложения, ориентированные на Android 11 (уровень API 30), не могут быть установлены, если они содержат сжатый файл resources.arsc
или если этот файл не выровнен по границе 4 байтов.
Более подробную информацию об этом изменении см. в разделе Сжатые файлы ресурсов .
ОГРАНИЧЕННЫЙ_ДОСТУП_К_ХРАНИЛИЩУ
Изменить идентификатор : 141600225
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Если ваше приложение ориентировано на Android 11 и использует Storage Access Framework (SAF) , вы больше не сможете получить доступ к определенным каталогам с помощью действий намерения ACTION_OPEN_DOCUMENT
и ACTION_OPEN_DOCUMENT_TREE
. Чтобы узнать больше об этих изменениях, см. раздел Ограничения доступа к документам на странице, где обсуждаются обновления конфиденциальности, связанные с хранилищем в Android 11.
SELINUX_LATEST_CHANGES
Изменить идентификатор : 143539591
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Это изменение закрывает доступ приложений к домену untrusted_app_R-targetSDk SELinux. Это одно из основополагающих изменений в фреймворке совместимости, которое позволяет приложениям переключать другие изменения, которые закрывают targetSdkVersion
, не изменяя targetSDKVersion
своего приложения. По этой причине не следует отключать это изменение для приложения, предназначенного для Android 11, иначе приложение не будет работать.
Это изменение не повлияет на приложения, использующие общий идентификатор пользователя.
ИСКЛЮЧЕНИЯ_ИЗ_БЕЗОПАСНОСТИ
Изменить идентификатор : 147340954
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
До Android 11 SecurityException
выдавался только setEnabled
API для ошибки разрешения. В Android 11 это больше не так, и SecurityException
может выдаваться по любому количеству причин, ни одна из которых не раскрывается вызывающему.
Чтобы сохранить существующее поведение API, если для приложения, не предназначенного для Android 11, происходит сбой устаревшего разрешения или сбой принудительного применения субъекта, исключение преобразуется в IllegalStateException
, существовавшее в источнике до Android 11.
USE_SET_LOCATION_ENABLED
Изменить идентификатор : 117835097
Состояние по умолчанию : включено для приложений, предназначенных для Android 11 (уровень API 30) или выше.
Приложения администратора, ориентированные на Android 11, больше не могут использовать DevicePolicyManager.setSecureSetting(ComponentName, String, String)
для изменения устаревшего параметра Settings.Secure.LOCATION_MODE
. Вместо этого они должны использовать DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
.