O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Avaliar se o app precisa declarar permissões

Antes de declarar as permissões no seu app, considere se é necessário fazer isso. Sempre que o usuário testar um recurso do app que exija uma permissão de tempo de execução, seu app precisará interromper o trabalho do usuário com uma solicitação de permissão. Então, o usuário precisará decidir. Se o usuário não entender por que seu app solicita uma permissão específica, ele poderá negá-la ou até mesmo desinstalar o app.

Verifique se outro app instalado pode executar a funcionalidade em nome do seu app. Nesses casos, é necessário delegar a tarefa para outro app usando uma intent. Ao fazer isso, não é preciso declarar as permissões necessárias, porque o outro aplicativo declara a permissão.

Alternativas para declarar permissões

Esta seção descreve vários casos de uso que seu app pode atender sem declarar a necessidade de permissões.

Mostrar lugares próximos

Seu app pode precisar saber a localização aproximada do usuário. Isso é útil para mostrar informações que reconhecem a localização, como restaurantes nas proximidades.

Alguns casos de uso exigem uma estimativa aproximada da localização de um dispositivo, a cerca de 2 quilômetros. Nessas situações, você pode declarar a permissão ACCESS_COARSE_LOCATION. É melhor não declarar a permissão e, em vez disso, solicitar que o usuário insira um endereço ou CEP.

Outros casos de uso exigem uma estimativa mais precisa da localização de um dispositivo. Somente nessas situações, não há problema em declarar a permissão ACCESS_FINE_LOCATION.

Tirar uma foto

Os usuários podem tirar fotos no seu app usando o app de câmera do sistema pré-instalado.

Nessa situação, não declare a permissão CAMERA. Em vez disso, invoque a ação da intent ACTION_IMAGE_CAPTURE.

Gravar um vídeo

Os usuários podem gravar vídeos no seu app usando o app de câmera do sistema pré-instalado.

Nessa situação, não declare a permissão CAMERA. Em vez disso, invoque a ação da intent ACTION_VIDEO_CAPTURE.

Abrir mídia ou documentos de outro app

Seu app pode mostrar conteúdo criado por outro app, como fotos, vídeos ou arquivos de texto.

Nessa situação, não declare a permissão READ_EXTERNAL_STORAGE. Além disso, não acesse diretamente dispositivos compartilhados ou externos usando métodos como getExternalStorageDirectory(), que estão obsoletos a partir do Android 10 (API de nível 29). Em vez disso, use o armazenamento de mídia do dispositivo para abrir arquivos de mídia e o Framework de acesso ao armazenamento para abrir documentos e outros arquivos.

Identifique o dispositivo que está executando uma instância do seu app

Uma instância específica do seu app pode precisar saber em qual dispositivo ele está sendo executado. Isso é útil para apps que têm preferências ou mensagens específicas do dispositivo, como playlists diferentes para dispositivos de TV e wearables.

Nessa situação, não acesse o IMEI do dispositivo diretamente. Na verdade, não é possível fazer isso no Android 10 (API de nível 29). Em vez disso, siga um destes procedimentos:

  • Consiga um identificador de dispositivo exclusivo para a instância do seu app usando a biblioteca de ID de instância.
  • Crie seu próprio identificador com escopo do armazenamento do seu aplicativo. Use funções básicas do sistema, como randomUUID().

Parear com um dispositivo por Bluetooth

Seu app pode oferecer uma experiência aprimorada transferindo dados para outro dispositivo por Bluetooth.

Para aceitar essa funcionalidade, não declare as permissões ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATIION ou BLUETOOTH_ADMIN. Em vez disso, use o pareamento de dispositivo complementar.

Pausar mídia quando o app for interrompido

Se o usuário receber uma chamada telefônica ou se ocorrer um alarme configurado pelo usuário, seu app irá pausar qualquer reprodução de mídia até recuperar a seleção de áudio.

Para aceitar essa funcionalidade, não declare a permissão READ_PHONE_STATE. Em vez disso, implemente o manipulador de eventos onAudioFocusChange(), que é executado automaticamente quando o sistema muda a seleção de áudio. Saiba mais sobre como implementar a seleção de áudio.

Filtrar chamadas telefônicas

Para minimizar interrupções desnecessárias do usuário, seu app pode filtrar chamadas telefônicas como spam.

Para aceitar essa funcionalidade, não declare a permissão READ_PHONE_STATE. Em vez disso, use a API CallScreeningService.