Esta página descreve cada mudança de comportamento que afeta o app e foi adicionada ao framework de compatibilidade no Android 11 (nível 30 da API). Use esta lista em conjunto com as opções do desenvolvedor e comandos ADB para testar e depurar seu app enquanto você se prepara para direcionar ao Android 11.
ADD_CONTENT_OBSERVER_FLAGS
ID da mudança: 150939131
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps voltados para o Android 11, há uma nova sobrecarga de API public onChange(boolean, Uri, int)
que inclui um argumento flags
de inteiro.
Esse novo método é uma alternativa pública do SDK para apps que usam o método sobrecarregado onChange()
não SDK que inclui um argumento inteiro userId
.
ADMIN_APP_PASSWORD_COMPLEXITY
ID da mudança: 123562444
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps de administrador voltados para o Android 11, gere um erro sempre que um
app definir um requisito de senha que não seja relevante para a qualidade da senha
atualmente atribuída. Por exemplo, quando a qualidade da senha é definida como DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
, um app não poderia definir um comprimento de senha mínimo. Nesse caso, antes de tentar definir o comprimento mínimo da senha, o app precisa primeiro chamar o método setPasswordQuality()
e só então chamar o método setPasswordMinimumLength()
.
Além disso, quando um app de administrador voltado para o Android 11 diminui a qualidade da senha, todos os requisitos de senha existentes que não são mais aplicáveis são redefinidos para os valores padrão.
APP_DATA_DIRECTORY_ISOLATION
ID da mudança: 143937733
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Apps voltados para o Android 11 não podem mais acessar arquivos em diretórios de dados particulares de nenhum app, independentemente da versão do SDK de destino do outro app.
Para saber mais, consulte Acesso a diretórios privados.
APN_READING_PERMISSION_CHANGE_ID
ID da mudança: 124107808
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps destinados ao Android 11, o acesso ao banco de dados APN agora
requer a permissão
Manifest.permission.WRITE_APN_SETTINGS
.
Para saber mais sobre essa mudança, consulte Acesso de leitura restrito ao banco de dados do APN.
BACKGROUND_RATIONALE_CHANGE_ID
ID da mudança: 147316723
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Agora, os apps precisam fornecer uma justificativa válida sempre que solicitarem acesso à localização do dispositivo em segundo plano.
Para saber mais sobre essa mudança, consulte o guia sobre como acessar a localização em segundo plano no Android 11 que discute mudanças de privacidade relacionadas à localização no Android 11.
CALLBACK_ON_CLEAR_CHANGE
ID da mudança: 119147584
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Sempre que
Editor.clear
é chamado, um callback para
OnSharedPreferenceChangeListener.onSharedPreferenceChanged
é feito com uma chave null
.
Para saber mais sobre essa mudança, consulte Mudanças de callback para OnSharedPreferenceChangeListener.
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
ID da mudança: 130595455
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Os códigos de erro estão expandidos para updateAvailableNetworks(List,
Executor,
Consumer)
e setPreferredOpportunisticDataSubscription(int, boolean, Executor,
Consumer)
.
CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
ID da mudança: 148180766
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Essa é uma mudança de comportamento sutil para startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
.
Antes dessa mudança, o sistema era chamado de volta para a operação trocada. Após a mudança, o sistema faz o callback para a operação realmente solicitada ou todas as operações trocadas se nenhuma operação for especificada.
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
ID da mudança: 136219221
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps voltados para o Android 11, os serviços em primeiro plano só recebem recursos em uso de câmera e microfone quando o R.attr.foregroundServiceType
está configurado como ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
e ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
, respectivamente, no arquivo de manifesto. Em versões anteriores do Android, os serviços em primeiro plano recebiam automaticamente recursos de câmera e microfone.
Para saber mais sobre essa mudança, consulte Tipos de serviço em primeiro plano no Android 11.
CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
ID da mudança: 128611929
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Os apps não podem mais postar avisos personalizados em segundo plano. No entanto, os apps ainda
podem postar avisos em segundo plano usando o método Toast.makeText(Context, CharSequence,
int)
e variantes dele.
Para saber mais sobre essa mudança, consulte Visualizações de avisos personalizadas estão bloqueadas.
CHANGE_RESTRICT_SAW_INTENT
ID da mudança: 135920175
Estado padrão: essa mudança não pode ser ativada ou desativada. Ela é registrada apenas pelo framework de compatibilidade.
Intents que usam a ação android.settings.MANAGE_APP_OVERLAY_PERMISSION
e o esquema de dados URI package
não direcionam mais o usuário para uma tela específica do app para gerenciar a permissão associada. Em vez disso, o usuário é direcionado para
uma tela em que pode gerenciar todos os apps que solicitaram a permissão.
CHANGE_TEXT_TOASTS_IN_THE_SYSTEM
ID da mudança: 147798919
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Os avisos de texto agora são renderizados pela SystemUI em vez de no app. Isso evita que apps burlem as restrições de postagem de avisos personalizados em segundo plano.
DEFAULT_SCOPED_STORAGE
ID da mudança: 149924527
Estado padrão: ativada para todos os apps.
Todos os apps voltados para o Android 11 agora usam o armazenamento com escopo por padrão e não podem mais desativá-lo.
No entanto, é possível testar o app sem armazenamento com escopo, independentemente da versão do SDK de destino e dos valores de sinalização do manifesto do app, desativando essa mudança.
Para saber mais sobre as mudanças no armazenamento com escopo no Android 11, consulte a seção armazenamento com escopo na página sobre mudanças no armazenamento do Android 11.
EMPTY_INTENT_ACTION_CATEGORY
ID da mudança: 151163173
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps direcionados ao Android 11, o sistema gera um erro se action
ou category
de um filtro de intent for uma string vazia. Um bug na plataforma anterior ao Android 11 permitia que esse caso fosse transmitido sem gerar um erro. Isso não inclui casos em que o atributo é nulo ou ausente, porque isso sempre gerou um erro.
FILTER_APPLICATION_QUERY
ID da mudança: 135549675
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Os apps precisam declarar os pacotes e as intents que pretendem usar antes de ver detalhes sobre outros apps em um dispositivo. Essas declarações precisam ser feitas
usando a tag <queries>
no manifesto do app.
Para saber mais sobre como consultar e interagir com outros apps instalados no Android 11, consulte a página de privacidade visibilidade do pacote.
FORCE_ENABLE_SCOPED_STORAGE
ID da mudança: Valor: 132649864
Estado padrão: desativada para todos os apps.
Todos os apps voltados para o Android 11 agora usam o armazenamento com escopo por padrão e não podem mais desativá-lo.
No entanto, se o app ainda for direcionado ao Android 10 (API de nível 29) ou anterior, teste o app com armazenamento com escopo, independentemente da versão do SDK de destino e dos valores de sinalização do manifesto, ativando essa opção.
Para saber mais sobre as mudanças no armazenamento com escopo no Android 11, consulte a seção armazenamento com escopo na página sobre mudanças no armazenamento do Android 11.
GET_DATA_CONNECTION_STATE_R_VERSION
ID da mudança: 148535736
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para verificar a versão do SDK para PreciseDataConnectionState#getDataConnectionState
.
GET_DATA_STATE_R_VERSION
ID da mudança: 148534348
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para verificar a versão do SDK para getDataState()
.
GET_PROVIDER_SECURITY_EXCEPTIONS
ID da mudança: 150935354
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps direcionados para o Android 11 (API de nível 30) ou versões mais recentes, o getProvider(String)
não gera mais exceções de segurança.
GET_TARGET_SDK_VERSION_CODE_CHANGE
ID da mudança: 145147528
Estado padrão: ativado para apps voltados para o Android 10 (API de nível 29) ou mais recente.
Para verificar a versão do SDK para o método SmsManager.sendResolverResult()
.
GWP_ASAN
ID da mudança: 135634846
Estado padrão: desativada para todos os apps.
Ativa a detecção de bugs de memória nativa de amostra em apps.
Para saber mais sobre essa mudança, consulte o Guia do GWP-ASan.
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
ID da mudança: 149997251
Estado padrão: ativado para apps voltados para o Android 10 (API de nível 29) ou mais recente.
Para apps direcionados para o Android 10 (nível da API 29) ou mais recentes, remove o acesso a todas
as interfaces não SDK que fazem parte da lista max-target-p
(greylist-max-p
)
do Android 10 (nível da API 29).
HIDE_MAXTARGETSDK_Q_HIDDEN_APIS
ID da mudança: 149994052
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps direcionados para o Android 11 (nível da API 30) ou mais recentes, remove o acesso a todas
as interfaces não SDK que fazem parte da lista max-target-q
(greylist-max-q
)
do Android 11 (nível da API 30).
Para saber mais sobre essa mudança, consulte Interfaces não SDK que agora estão bloqueadas no Android 11.
LISTEN_CODE_CHANGE
ID da mudança: 147600208
Estado padrão: ativado para apps voltados para o Android 10 (API de nível 29) ou mais recente.
Para verificar a versão do SDK para TelephonyManager.listen(PhoneStateListener,
int)
.
MISSING_APP_TAG
ID da mudança: 150776642
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps direcionados ao Android 11, um erro agora é gerado quando o arquivo de manifesto de um app não tem uma tag application
ou instrumentation
.
NATIVE_HEAP_POINTER_TAGGING
ID da mudança: 135754954
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps voltados para o Android 11, as alocações de heap nativas agora têm uma tag diferente de zero no byte mais significativo.
Para saber mais, consulte Inclusão de tag de ponteiro de heap.
PHONE_STATE_LISTENER_LIMIT_CHANGE_ID
ID da mudança: 150880553
Estado padrão: ativada para todos os apps.
Para apps direcionados ao Android 11, agora há um limite no número de objetos PhoneStateListener
que qualquer processo pode registrar via TelephonyManager.listen(PhoneStateListener, int)
.
O limite padrão é 50, que pode ser modificado por atualizações de configuração remota do dispositivo.
Esse limite é aplicado usando uma
IllegalStateException
gerada por TelephonyManager.listen(PhoneStateListener, int)
quando o
processo com problema tenta registrar muitos listeners.
PREVENT_META_REFLECTION_BLACKLIST_ACCESS
ID da mudança: 142365358
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Os apps direcionados para o Android 11 não podem mais usar uma camada extra de reflexão para acessar interfaces não SDK restritas.
PROCESS_CAPABILITY_CHANGE_ID
ID da mudança: 136274596
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps voltados para o Android 11, a sinalização Context.BIND_INCLUDE_CAPABILITIES
agora pode ser usada para transmitir recursos em uso do processo do cliente para um serviço vinculado.
REMOVE_ANDROID_TEST_BASE
ID da mudança: 133396946
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para apps direcionados para o Android 11, a biblioteca android.test.base
foi removida se o app não depende de android.test.runner
(porque depende das classes da biblioteca android.test.base
).
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
ID da mudança: 136293963
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Para serviços de acessibilidade voltados para o Android 11, a sinalização FLAG_REQUEST_ACCESSIBILITY_BUTTON
precisa ser especificada no arquivo de metadados do serviço de acessibilidade.
Caso contrário, ela será ignorada.
Para saber mais sobre essa mudança, consulte Declarar o uso do botão de acessibilidade no arquivo de metadados.
RESOURCES_ARSC_COMPRESSED
ID da mudança: 132742131
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Os apps destinados ao Android 11 (API de nível 30) não poderão ser instalados se
contiverem um arquivo compactado resources.arsc
ou se esse arquivo não estiver alinhado em
um limite de 4 bytes.
Para saber mais sobre essa mudança, consulte Arquivos de recursos compactados.
RESTRICT_STORAGE_ACCESS_FRAMEWORK
ID da mudança: 141600225
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Se o app for voltado para o Android 11 e usar o Framework de acesso
ao armazenamento (SAF, na sigla em inglês), não será mais possível
acessar determinados diretórios usando as ações da intent
ACTION_OPEN_DOCUMENT
e
ACTION_OPEN_DOCUMENT_TREE
. Para saber mais sobre essas mudanças, consulte a seção de restrições de
acesso ao documento
na página que discute atualizações de privacidade relacionadas a armazenamento no
Android 11.
SELINUX_LATEST_CHANGES
ID da mudança: 143539591
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Essa mudança permite que os apps acessem o domínio SELinux untrusted_app_R-targetSDk.
Essa é uma das mudanças fundamentais no framework de compatibilidade que permite que os apps alternem outras mudanças controladas por targetSdkVersion
sem modificar as targetSDKVersion
do app. Por esse motivo, não desative essa mudança para um app direcionado ao Android 11, porque o app não funcionará.
Essa mudança não tem efeito para apps que usam um ID do usuário compartilhado.
THROW_SECURITY_EXCEPTIONS
ID da mudança: 147340954
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Antes do Android 11, um SecurityException
só seria gerado por APIs setEnabled
para um erro de permissão. No
Android 11, isso não é mais válido, e um SecurityException
pode ser gerado por vários motivos, e nenhum deles é exposto ao
autor da chamada.
Para manter o comportamento já existente da API, se ocorrer uma falha de permissão legada ou falha de aplicação de ação em um app que não direcionado ao Android 11, a exceção será forçada para um IllegalStateException
que existia na fonte antes do Android 11.
USE_SET_LOCATION_ENABLED
ID da mudança: 117835097
Estado padrão: ativado para apps direcionados para o Android 11 (API de nível 30) ou mais recente.
Apps de administrador voltados para o Android 11 não podem mais usar
DevicePolicyManager.setSecureSetting(ComponentName, String, String)
para mudar a configuração Settings.Secure.LOCATION_MODE
obsoleta. Em vez disso, eles usarão DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
.