No Android 9 e inferior, as permissões de captura de buffer de tela ( READ_FRAME_BUFFER
, CAPTURE_VIDEO_OUTPUT
e CAPTURE_SECURE_VIDEO_OUTPUT
) foram concedidas a aplicativos que tinham assinatura ou permissões privilegiadas. Isso permitiu atividades de captura de buffer de tela contínuas, como fazer capturas de tela ou gravar o conteúdo da tela de um dispositivo.
A partir do Android 10, para evitar o acesso silencioso ao conteúdo da tela de um dispositivo, as permissões de captura de vídeo não são concedidas a aplicativos privilegiados. O acesso sem o consentimento do usuário é restrito e concedido apenas a apps com permissões de assinatura. Os fabricantes de dispositivos que executam aplicativos privilegiados com base nessa funcionalidade de captura silenciosa são afetados por esse requisito.
A partir do Android 10, se você não tiver as permissões de assinatura de captura de buffer de tela listadas, seu aplicativo não poderá capturar buffers de tela sem o consentimento do usuário. Para garantir que você tenha as permissões necessárias, pesquise no arquivo de manifesto as permissões de assinatura listadas anteriormente. Migre todos os aplicativos privilegiados afetados (conforme encontrado em sua pesquisa) para a classe MediaProjectionManager , que permite que qualquer aplicativo de terceiros capture buffers de tela sem permissões, mas com o consentimento do usuário. Esse fluxo exibe uma caixa de diálogo que solicita que o usuário permita a captura de tela quando um aplicativo a inicia. No Android 10, os novos recursos da caixa de diálogo incluem o seguinte:
- Fornece associações mais visíveis com o ícone do Cast .
- Fornece mais informações sobre a confidencialidade dos dados que podem ser acessados.
- Impede que os usuários ocultem a caixa de diálogo em iniciações futuras: a caixa de diálogo é exibida sempre.