As permissões relacionadas a localização, microfone e câmera concedem ao app acesso a informações particularmente sensíveis sobre os usuários. A plataforma inclui vários mecanismos, descritos nesta página, para ajudar os usuários a se manterem informados e no controle sobre quais apps podem acessar o local, o microfone e a câmera.
Esses recursos do sistema de preservação de privacidade não afetam como o app processa as permissões relacionadas a localização, microfone e câmera, desde que você siga as práticas recomendadas de privacidade.
Especificamente, faça o seguinte no seu aplicativo:
- Aguarde até que o usuário conceda a permissão
CAMERA
ao app para acessar a câmera do dispositivo. - Aguarde até que o usuário conceda a permissão
RECORD_AUDIO
ao app para acessar o microfone do dispositivo. - Aguarde até que o usuário interaja com um recurso do seu app que exija
a localização antes de solicitar as permissões
ACCESS_COARSE_LOCATION
ouACCESS_FINE_LOCATION
, conforme descrito no guia sobre como solicitar permissões de localização de dados. - Aguarde até que o usuário conceda ao seu app a permissão
ACCESS_COARSE_LOCATION
ouACCESS_FINE_LOCATION
antes de solicitar a permissãoACCESS_BACKGROUND_LOCATION
.
Painel de privacidade
Em dispositivos compatíveis com o Android 12 ou versões mais recentes, a tela do painel de privacidade aparece nas configurações do sistema. Nela, os usuários podem acessar telas separadas que mostram quando os apps acessam informações de localização, câmera e microfone. Cada tela mostra uma linha do tempo de quando diferentes apps acessaram um tipo específico de dados. A Figura 1 mostra a linha do tempo dos acessos aos dados de informação da localização.
Mostrar justificativa para acesso aos dados
O app pode fornecer uma justificativa para os usuários para ajudá-los a entender por que precisa acessar informações de localização, câmera ou microfone. Essa lógica pode ser exibida na nova tela do painel de privacidade, na tela de permissões do app ou em ambas.
Para explicar por que o app acessa as informações de localização, câmera e microfone, siga estas etapas:
Adicione uma atividade que, quando iniciada, fornece uma justificativa para o motivo pelo qual o app executa um tipo específico de ação de acesso a dados. Nessa atividade, defina o atributo
android:permission
comoSTART_VIEW_PERMISSION_USAGE
.Se o app for direcionado ao Android 12 ou versões mais recentes, será necessário definir explicitamente um valor para o atributo
android:exported
.Adicione o filtro de intent a seguir à atividade recém-adicionada:
<!-- android:exported required if you target Android 12. --> <activity android:name=".DataAccessRationaleActivity" android:permission="android.permission.START_VIEW_PERMISSION_USAGE" android:exported="true"> <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on your app permission's page in system settings. VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information icon on the Privacy Dashboard screen. --> <intent-filter> <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" /> <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" /> <category android:name="android.intent.category.DEFAULT" /> ... </intent-filter> </activity>
Decida o que a atividade de lógica de acesso a dados exibirá. Por exemplo, você pode exibir o site do app ou um artigo da Central de Ajuda. Para fornecer uma explicação mais detalhada sobre os tipos de dados que o app acessa e quando isso ocorre, processe os extras que o sistema inclui ao invocar a intent de permissão de uso:
- Se o sistema invocar
ACTION_VIEW_PERMISSION_USAGE
, o app poderá extrair um valor paraEXTRA_PERMISSION_GROUP_NAME
. - Se o sistema invocar
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD
, o app poderá extrair valores paraEXTRA_PERMISSION_GROUP_NAME
,EXTRA_ATTRIBUTION_TAGS
,EXTRA_START_TIME
eEXTRA_END_TIME
.
- Se o sistema invocar
Dependendo dos filtros de intent adicionados, os usuários verão um ícone de informações ao lado do nome do app em algumas telas:
- Se você adicionar o filtro de intent que contém a ação
VIEW_PERMISSION_USAGE
, os usuários vão ver o ícone na página de permissões do app nas configurações do sistema. É possível aplicar essa ação a todas as permissões de execução. - Se você adicionar o filtro de intent que contém a ação
VIEW_PERMISSION_USAGE_FOR_PERIOD
, os usuários vão ver o ícone ao lado do nome do app sempre que ele aparecer na tela do painel de privacidade.
Quando os usuários selecionarem esse ícone, a atividade da lógica do app será iniciada.
Indicadores
Em dispositivos com o Android 12, quando um app acessa o microfone ou a câmera, um ícone é exibido na barra de status. Se o app estiver no modo imersivo, o ícone será exibido no canto superior direito da tela. Os usuários podem abrir as Configurações rápidas e selecionar o ícone para ver quais apps estão usando o microfone ou a câmera. A Figura 2 mostra um exemplo de captura de tela que contém os ícones.
Identificar a localização da tela dos indicadores
Caso seu app seja compatível com o modo imersivo ou com uma interface em tela cheia, os indicadores poderão
se sobrepor à interface do app. Para ajudar a adaptar a interface a esses indicadores,
o sistema introduz o método
getPrivacyIndicatorBounds()
,
que o snippet de código a seguir demonstra. Com essa API, é possível
identificar os limites em que os indicadores podem aparecer. Depois, você pode
organizar a interface da tela de forma diferente.
Kotlin
view.setOnApplyWindowInsetsListener { view, windowInsets -> val indicatorBounds = windowInsets.getPrivacyIndicatorBounds() // change your UI to avoid overlapping windowInsets }
Alternadores
Em dispositivos compatíveis com o Android 12 ou versões mais recentes, os usuários podem ativar e desativar o acesso à câmera e ao microfone para todos os apps no dispositivo pressionando uma única opção de alternância. Os usuários podem acessar as opções de alternância nas Configurações rápidas, como mostrado na Figura 3, ou na Tela de privacidade nas configurações do sistema.
Alternar a câmera e o microfone afeta todos os apps do dispositivo:
- Quando o usuário desativa o acesso à câmera, o app recebe um feed em branco.
Quando o usuário desativa o acesso ao microfone, o app recebe áudio silencioso. Além disso, os sensores de movimento terão limitação de taxa, independente de você declarar a permissão
HIGH_SAMPLING_RATE_SENSORS
ou não.
Quando o usuário desativar o acesso à câmera ou ao microfone e iniciar um app que precisa de acesso às informações da câmera ou do microfone, o sistema lembrará o usuário de que o botão desses recursos do dispositivo está desativado.
Verificar a compatibilidade do dispositivo
Para conferir se um dispositivo é compatível com a desativação do microfone e da câmera, adicione a lógica mostrada no snippet de código a seguir:
Kotlin
val sensorPrivacyManager = applicationContext .getSystemService(SensorPrivacyManager::class.java) as SensorPrivacyManager val supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE) val supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA)
Java
SensorPrivacyManager sensorPrivacyManager = getApplicationContext() .getSystemService(SensorPrivacyManager.class); boolean supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE); boolean supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA);