Mudanças de comportamento: apps destinados ao Android 13 ou a versões mais recentes

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Como nas versões anteriores, o Android 13 inclui mudanças de comportamento que podem afetar seu app. As mudanças de comportamento abaixo se aplicam exclusivamente a apps destinados ao Android 13 ou versões mais recentes. Caso seu app seja direcionado ao Android 13 ou a versões mais recentes, faça modificações para oferecer suporte a esses comportamentos de forma adequada, quando aplicável.

Consulte também a lista de mudanças de comportamento que afetam todos os apps executados no Android 13.

Privacidade

A permissão de notificação afeta a aparência do serviço em primeiro plano

Se o usuário negar a permissão de notificação, ele ainda vai ver avisos relacionados a esses serviços em primeiro plano no gerenciador de tarefas de serviços em primeiro plano (FGS), mas não na gaveta de notificações.

Nova permissão de execução para dispositivos Wi-Fi por perto

Nas versões anteriores do Android, o usuário precisa conceder ao app a permissão ACCESS_FINE_LOCATION para concluir vários casos de uso comuns de Wi-Fi relacionados a pontos de acesso, conexões Wi-Fi Direct, RTT do Wi-Fi e muito mais.

Como é difícil para os usuários associarem permissões de localização à funcionalidade Wi-Fi, o Android 13 (API de nível 33) introduz uma nova permissão de execução no grupo de permissões NEARBY_DEVICES para apps que gerenciam as conexões de um dispositivo a pontos de acesso Wi-Fi por perto. A permissão NEARBY_WIFI_DEVICES atende a esses casos de uso do Wi-Fi.

Contanto que o app não receba informações de localização física das APIs de Wi-Fi, solicite NEARBY_WIFI_DEVICES, em vez de ACCESS_FINE_LOCATION, quando o app for destinado ao Android 13 ou a versões mais recentes e use APIs de Wi-Fi. Esse processo é parecido com o que é feito no Android 12 (nível 31 da API) e versões mais recentes ao declarar que as informações do dispositivo Bluetooth nunca são usadas para localização.

Saiba mais sobre a permissão para dispositivos Wi-Fi por perto.

Permissões de mídia granulares

Os dois botões mostrados na caixa de diálogo, de cima para baixo, são: "Permitir" e "Não
  permitir".
Figura 1. Caixa de diálogo de permissões do sistema exibida para o usuário ao solicitar a permissão READ_MEDIA_AUDIO.

Se o app for destinado ao Android 13, é necessário solicitar uma ou mais permissões novas, em vez das permissões READ_EXTERNAL_STORAGE e WRITE_EXTERNAL_STORAGE.

O conjunto de permissões solicitadas depende do tipo de mídia que o app precisa acessar:

Tipo de mídia Permissão necessária
Imagens e fotos READ_MEDIA_IMAGES
Vídeos READ_MEDIA_VIDEO
Arquivos de áudio READ_MEDIA_AUDIO

Se o usuário já tiver concedido a permissão READ_EXTERNAL_STORAGE ao app, o sistema concederá todas as novas permissões automaticamente.

Caso contrário, o sistema vai exibir uma caixa de diálogo para o usuário quando o app solicitar qualquer uma das permissões apresentadas na tabela anterior. Na figura 1, o app solicita a permissão READ_MEDIA_AUDIO. Se você solicitar a permissão READ_MEDIA_IMAGES e READ_MEDIA_VIDEO ao mesmo tempo, apenas uma caixa de diálogo será exibida.

Etapas de migração para o Android 13

Depois de destinar o app ao Android 13, declare as permissões de mídia necessárias. Para manter a compatibilidade com versões mais antigas do Android, declare a permissão READ_EXTERNAL_STORAGE ao definir maxSdkVersion como 32, conforme mostrado no snippet de código a seguir:

<manifest ...>
    <!-- Required only if your app targets Android 13. -->
    <!-- Declare one or more the following permissions only if your app needs
    to access data that's protected by them. -->
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

    <!-- Required to maintain app compatibility. -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
                     android:maxSdkVersion="32" />
    <application ...>
        ...
    </application>
</manifest>

O uso de sensores corporais em segundo plano exige uma nova permissão

O Android 13 introduz o conceito de "acesso durante o uso" para sensores corporais, como frequência cardíaca, temperatura e percentual de oxigênio no sangue. Esse modelo de acesso é bastante parecido com o introduzido pelo sistema para informações de local no Android 10 (nível 29 da API).

Se o app for destinado ao Android 13 e exigir acesso a informações do sensor corporal durante a execução em segundo plano, vai ser necessário declarar a nova permissão BODY_SENSORS_BACKGROUND, além da permissão BODY_SENSORS existente.

Segurança

Filtros de intent bloqueiam intents não correspondentes

Quando o app envia uma intent para um componente exportado de outro app destinado ao Android 13 ou versões mais recentes, essa intent só é entregue se corresponder a um elemento <intent-filter> no app de destino. Ou seja, as intents não correspondentes são bloqueadas.

Exceções em que a correspondência de intent não é aplicada:

  • Intents entregues a componentes que não declaram filtros de intent.
  • Intents originadas de um mesmo app.
  • Intents do sistema, ou seja, as intents enviadas do UID do sistema (uid=1000). Apps do sistema incluem system_server e apps que definem android:sharedUserId como android.uid.system.
  • Intents originadas de uma raiz.

Se um app de destino fizer upgrade para o Android 13 ou versões mais recentes, todas as intents originadas de apps externos serão entregues a um componente exportado, desde que ele corresponda aos elementos <intent-filter> declarados, independentemente da versão do SDK de destino do app que as enviou.

Desempenho e bateria

Uso de recursos da bateria

Se o usuário colocar um app destinado ao Android 13 no estado "restrito" com relação ao uso da bateria em segundo plano, o sistema vai aplicar várias limitações relacionadas a transmissões.

Saiba mais sobre as novas limitações para uso da bateria em segundo plano em estado restrito na página que descreve o uso de recursos da bateria introduzidos no Android 13.

Experiência do usuário

Controles de mídia derivados de PlaybackState

Em apps destinados ao Android 13 (API de nível 33) e versões mais recentes, o sistema deriva os controles de mídia de ações PlaybackState. Isso permite que o sistema exiba um conjunto mais completo de controles, consistentes entre smartphones e tablets em termos técnicos e alinhados à maneira como os controles de mídia são renderizados em outras plataformas Android, como o Android Auto e o Android TV.

A Figura 2 mostra um exemplo de como eles são exibidos em um smartphone e em um tablet, respectivamente.

Visualização de controles de mídia em um smartphone e um tablet,
            usando como exemplo uma faixa de som para mostrar como os botões podem ser exibidos.
Figura 2: controles de mídia em smartphones e tablets

Antes do Android 13, o sistema exibia até cinco ações da notificação MediaStyle na ordem em que elas eram adicionadas. No modo compacto, quando as configurações rápidas estavam recolhidas, por exemplo, até três ações especificadas com setShowActionsInCompactView() eram mostradas.

A partir do Android 13, o sistema exibe até cinco botões de ação com base no PlaybackState, conforme descrito na tabela a seguir. No modo compacto, apenas os três primeiros slots de ação serão exibidos. No caso de apps que não são destinados ao Android 13 ou que não incluem um PlaybackState, o sistema exibirá controles de acordo com a lista Action adicionada à notificação MediaStyle, como descrito no parágrafo anterior.

Espaço Ação Critérios
1 Jogar O estado atual do PlaybackState é um dos seguintes:
  • STATE_NONE
  • STATE_STOPPED
  • STATE_PAUSED
  • STATE_ERROR
Ícone de carregamento O estado atual do PlaybackState é um dos seguintes:
  • STATE_CONNECTING
  • STATE_BUFFERING
Pausar O estado atual do PlaybackState não está listado acima.
2 Anterior As ações PlaybackState incluem ACTION_SKIP_TO_PREVIOUS.
Personalizado As ações PlaybackState não incluem ACTION_SKIP_TO_PREVIOUS e as ações personalizadas PlaybackState incluem uma ação personalizada que ainda não foi posicionada.
Vazio Os PlaybackState extras incluem um valor booleano true para a chave SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV.
3 Próxima As ações PlaybackState incluem ACTION_SKIP_TO_NEXT.
Personalizado As ações PlaybackState não incluem ACTION_SKIP_TO_NEXT e as ações personalizadas PlaybackState incluem uma ação personalizada que ainda não foi posicionada.
Vazio Os PlaybackState extras incluem um valor booleano true para a chave SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXT.
4 Personalizado As ações personalizadas PlaybackStateincluem uma ação personalizada que ainda não foi posicionada.
5 Personalizado As ações personalizadas PlaybackStateincluem uma ação personalizada que ainda não foi posicionada.

As ações personalizadas são posicionadas na ordem em que foram adicionadas ao PlaybackState.