Participe do evento ⁠#Android11: apresentação de lançamento da versão Beta no dia 3 de junho.

Atualizações de localização no Android 11

O Android 11 introduz mudanças na forma como os apps podem solicitar a permissão de localização em segundo plano e como os usuários podem concedê-la. As mudanças específicas dependem da versão do SDK de destino do app, mas todos os apps executados no Android 11 serão afetados.

Acesso à localização em segundo plano

Figura 1. A caixa de diálogo no app para permissões de localização não inclui mais a opção "Permitir sempre".

O Android 11 enfatiza ainda mais o controle do usuário sobre as informações de localização adicionando permissões únicas e removendo a capacidade dos usuários concederem a permissão ACCESS_BACKGROUND_LOCATION em um prompt no app, como mostrado na Figura 1.

Todos os apps que são executados no Android 11 são afetados por essa mudança. A forma como o app é afetado depende da versão do SDK de destino do app:

  • Se o app for direcionado ao Android 11, é possível criar uma IU personalizada para explicar aos usuários por que o app precisa da permissão ACCESS_BACKGROUND_LOCATION.
  • Se o app for direcionado a uma versão anterior, é preciso usar a IU fornecida pelo sistema, que afirma que o app quer acessar as informações de localização em segundo plano, mesmo quando não estiver sendo usado.

Criar uma IU personalizada

Se o app for direcionado ao Android 11, é possível exibir uma IU personalizada que permite explicar de forma mais clara aos usuários por que o app precisa da permissão ACCESS_BACKGROUND_LOCATION.

Siga as diretrizes desta seção para criar uma IU que os usuários possam entender melhor.

Explicar a necessidade de localização em segundo plano do seu app

Para solicitar ACCESS_BACKGROUND_LOCATION no app, é necessário primeiro que o app tenha uma permissão de localização em primeiro plano: ACCESS_COARSE_LOCATION ou ACCESS_FINE_LOCATION. Se você tentar solicitar ACCESS_BACKGROUND_LOCATION e qualquer outra permissão ao mesmo tempo, o sistema gerará uma exceção.

Depois que o app tiver uma dessas permissões, mostre uma IU ao usuário em que são oferecidos recursos que precisam da permissão ACCESS_BACKGROUND_LOCATION. Essa IU precisa incluir um texto explicando por que os recursos do app requerem a permissão ACCESS_BACKGROUND_LOCATION e apresentar ao usuário uma opção:

  • Conceder a permissão. Se o usuário selecionar essa opção, faça uma solicitação de permissão para ACCESS_BACKGROUND_LOCATION. O sistema direciona o usuário às configurações do sistema para concluir o processo de concessão da permissão.

    Para ajudar os usuários a encontrar a opção que permite conceder a permissão ACCESS_BACKGROUND_LOCATION nas configurações, você pode incluir o marcador visível para o usuário da opção "configurações" na IU do app. O método getBackgroundPermissionOptionLabel() oferece um marcador localizado para a preferência de idioma do dispositivo do usuário.

  • Não conceder a permissão. Os usuários têm que poder continuar a usar o app mesmo se não concederem a permissão. Se o usuário selecionar essa opção, o app poderá continuar, possivelmente guiando os usuários para longe do recurso que requer acesso à localização em segundo plano.

Mesmo depois que o app receber a permissão ACCESS_BACKGROUND_LOCATION, lembre-se de que os usuários podem mudar o acesso do app à localização para Permitir apenas enquanto estiver usando o app ou Perguntar sempre nas configurações do sistema. Eles também podem negar o acesso à localização completamente.

Direcionar os usuários para as configurações do sistema, se necessário

A opção está na seção intitulada
Figura 2. A tela de Configurações inclui uma opção chamada Permitir o tempo todo, que concede acesso à localização em segundo plano.

Se o usuário concordar em conceder a permissão ACCESS_BACKGROUND_LOCATION para o app, será necessário direcionar o usuário para a tela de configurações mostrada na Figura 2. Essa tela inclui a opção Permitir o tempo todo, que concede a permissão ACCESS_BACKGROUND_LOCATION ao app.

Redirecionamentos limitados para as configurações do sistema

Depois que o app direcionar os usuários até a página de permissões nas configurações do sistema, os usuários poderão escolher um nível de acesso que não seja Permitir o tempo todo, por exemplo: Negar. O Android 11 permite que o app direcione usuários para as configurações do sistema a partir de uma interface no máximo duas vezes. Portanto, é fundamental que você explique claramente aos usuários por que o recurso do app requer acesso à localização em segundo plano.

Quando o app atinge esse limite, ainda é possível invocar uma intent que direcione os usuários para a página de informações do app nas configurações do sistema. A partir dessa página, os usuários podem navegar para a página de permissões do seu app. Para carregar a página de informações do app, use a ação da intent Settings.ACTION_APPLICATION_DETAILS_SETTINGS.

Atenção: o uso de ACTION_APPLICATION_DETAILS_SETTINGS é altamente desencorajado, porque não explica aos usuários que o app está solicitando a permissão.

Usar a IU fornecida pelo sistema

Se o app for direcionado ao Android 10 (API de nível 29) ou anterior, é necessário mostrar uma caixa de diálogo fornecida pelo sistema, como mostrado na Figura 3, quando solicitar a permissão ACCESS_BACKGROUND_LOCATION:

Nas duas versões da caixa de diálogo, o link para
Figura 3. Solicitações de permissão de localização que incluem um link para as configurações do sistema, tanto antes de qualquer permissão de localização ser concedida (à esquerda) e depois de o usuário ter concedido uma permissão de localização de primeiro plano (à direita).

Essa caixa de diálogo inclui o seguinte:

  • Instruções sobre como acessar a página de permissões de localização do app nas configurações do sistema para selecionar Permitir o tempo todo.
  • Botões que concedem acesso à localização em primeiro plano ou um botão que nega um upgrade para o acesso à localização em segundo plano.