É possível evitar a gravação de tela no aplicativo Android?
Gostaria de desenvolver um aplicativo seguro para Android. Para isso, preciso detectar o software de gravação de tela que está executando em segundo plano e eliminá-los. Usei SECURE FLAG para evitar capturas de tela. Mas não sei se é possível impedir a captura de vídeo da tela do Android também. Deixe-me saber como evitar a captura de tela (vídeo / screenshots).
Respostas:
Vou dizer que não é possível impedir completamente a captura de tela / vídeo de qualquer aplicativo Android através dos meios suportados. Mas se você deseja bloqueá-lo apenas para dispositivos Android normais , o SECURE FLAG é substancial.
1) O sinalizador seguro bloqueia tanto a captura de tela normal quanto a captura de vídeo.
Veja a resposta aqui .
2) Existem meios alternativos de captura do conteúdo da tela.
Pode ser possível capturar a tela de outro aplicativo em um dispositivo com acesso root ou por meio do SDK,
Por exemplo: existe um software para espelhar a tela do seu telefone para o seu computador através do SDK e, portanto, o software de captura de tela pode ser usado lá, não detectável pelo seu aplicativo.
Veja a resposta aqui .
fonte
Basta adicionar esta linha:
Antes de seu
setContentView()
método.fonte
Para desativar a captura de tela:
Adicione a seguinte linha de código no
onCreate()
método:Para ativar a captura de tela:
Encontre
LayoutParams.FLAG_SECURE
e remova a linha de código.fonte
Para usuários Java, escreva esta linha acima de seu
setContentView(R.layout.activity_main);
Para usuários do kotlin
fonte
window?.set...
porque no Dialogs você não sabe se vai ter uma janela.Parece que você sabe como desabilitar as capturas de tela do seu aplicativo e há outras respostas que o ajudam nisso. Mas vou tentar dar-lhe algumas informações importantes que ninguém está lhe dando.
1) Você não pode ter um aplicativo que seja 100% seguro contra capturas de tela (foto / vídeo). Não existe uma maneira oficial de fazer capturas de tela no Android. Se um aplicativo estiver gravando telas, ele deve estar usando alguns métodos não suportados (enraizamento ou usando o SDK).
Há muito pouco espaço para você bloquear um aplicativo se ele estiver usando o acesso root para gravar telas.
2) Ninguém mencionou esse problema aqui, mas tenha muito cuidado ao usar
WindowManager.LayoutParams.FLAG_SECURE
. Foi verificado em muitos dispositivos (como no Samsung Galaxy ACE, por exemplo, GT-S5830), que isso torna a visão inteira embaralhada. Como isso,Por favor, coloque um cheque como este,
Funciona perfeitamente em dispositivos ICS, então não há problema nisso.
3) Também descobri que mesmo em dispositivos mais novos como o Android 4.3, isso causa problemas de animação quando a tela é girada. Por favor, verifique este relatório de bug.
fonte
Você pode fazer seu aplicativo como proprietário do dispositivo / perfil e ligar
setScreenCaptureDisabled()
. A partir dos documentos , esta api faz o seguinte:Como alternativa, você pode se tornar um aplicativo parceiro MDM (Gerenciamento de dispositivo móvel ) .OEMs fornece APIs adicionais para seus aplicativos parceiros MDM para controlar o dispositivo. Por exemplo, a samsung fornece api para controlar a gravação de tela no dispositivo para seus parceiros MDM.
Atualmente, esta é a única maneira de impor restrições de captura de tela.
fonte
Experimente isto:
fonte
Eu vi todas as respostas que são apropriadas apenas para uma única atividade, mas há minha solução que irá bloquear a captura de tela para todas as atividades sem adicionar nenhum código à atividade. Em primeiro lugar, crie uma classe de aplicativo personalizado e adicione um.
registerActivityLifecycleCallbacks
Depois, registre-o em seu manifesto.MyApplicationContext.class
Manifesto
fonte
De acordo com este guia oficial , você pode adicionar
WindowManager.LayoutParams.FLAG_SECURE
ao layout da janela e não permitirá as capturas de tela.fonte
Usei essa solução para permitir o instantâneo manual no aplicativo e, ao mesmo tempo, proibir a captura de tela quando o aplicativo entra em segundo plano, espero que ajude.
fonte
sobre a captura de tela da foto, FLAG_SECURE não funciona no dispositivo com acesso root.
mas se você monitorar o arquivo de captura de tela, pode impedir de obter o arquivo original.
tente este um .
1. monitorando a captura de tela (monitor de arquivo) com o serviço remoto Android
2. Exclua a imagem da captura de tela original.
3. entregar a instância do bitmap para que você possa modificar.
fonte