Est-il possible d'empêcher l'enregistrement d'écran dans l'application Android?
Je souhaite développer une application sécurisée Android. En cela, je dois détecter les logiciels d'enregistrement d'écran qui fonctionnent en arrière-plan et les tuer. J'ai utilisé SECURE FLAG pour éviter les captures d'écran. Mais je ne sais pas s'il est également possible d'empêcher la capture vidéo de l'écran Android. Faites-moi savoir comment empêcher la capture d'écran (vidéo / captures d'écran).
Réponses:
Je vais dire qu'il n'est pas possible d'empêcher complètement la capture d'écran / vidéo d'une application Android par des moyens pris en charge. Mais si vous ne souhaitez le bloquer que pour les appareils Android normaux , le SECURE FLAG est substantiel.
1) Le drapeau sécurisé bloque à la fois la capture d'écran normale et la capture vidéo.
Voir la réponse ici .
2) Il existe d'autres moyens de capturer le contenu de l'écran.
Il peut être possible de capturer l'écran d'une autre application sur un appareil enraciné ou en utilisant le SDK,
Par exemple: il existe un logiciel pour mettre en miroir l'écran de votre téléphone sur votre ordinateur via le SDK et ainsi un logiciel de capture d'écran pourrait être utilisé là-bas, impossible à découvrir par votre application.
Voir la réponse ici .
la source
Ajoutez simplement cette ligne:
Avant votre
setContentView()
méthode.la source
Pour désactiver la capture d'écran:
Ajoutez la ligne de code suivante dans la
onCreate()
méthode:Pour activer la capture d'écran:
Recherchez
LayoutParams.FLAG_SECURE
et supprimez la ligne de code.la source
Pour les utilisateurs Java, écrivez cette ligne au-dessus de votre
setContentView(R.layout.activity_main);
Pour les utilisateurs de kotlin
la source
window?.set...
parce que sur Dialogs, vous ne savez pas si vous allez avoir une fenêtre.Il semble que vous sachiez comment désactiver les captures d'écran de votre application et il existe d'autres réponses qui vous aident à ce sujet. Mais je vais essayer de vous donner des informations importantes que personne ne vous donne.
1) Vous ne pouvez pas avoir une application sécurisée à 100% contre la prise de captures d'écran (photo / vidéo). Il n'existe aucun moyen officiel de prendre des captures d'écran sous Android. Si une application enregistre des écrans, elle doit utiliser des méthodes non prises en charge (enracinement ou en utilisant le SDK).
Il y a très peu de possibilités pour vous de bloquer une application si elle utilise un accès root pour enregistrer des écrans.
2) Personne n'a mentionné ce problème ici, mais soyez très prudent lors de l'utilisation
WindowManager.LayoutParams.FLAG_SECURE
. Il a été vérifié sur de nombreux appareils (comme sur Samsung Galaxy ACE, par exemple GT-S5830), que cela rend la vue entière brouillée. Comme ça,Veuillez mettre un chèque comme celui-ci,
Cela fonctionne parfaitement sur les appareils ICS, donc pas de problème.
3) J'ai également découvert que même sur les appareils plus récents comme Android 4.3, cela pose des problèmes d'animation lorsque l'écran est tourné. Veuillez vérifier ce rapport de bogue.
la source
Vous pouvez faire de votre application le propriétaire de l'appareil / du profil et appeler
setScreenCaptureDisabled()
. À partir de la documentation , cette API effectue les opérations suivantes:Vous pouvez également devenir une application partenaire MDM (Mobile Device Management). L' OEM fournit des API supplémentaires à leurs applications partenaires MDM pour contrôler l'appareil.Par exemple, Samsung fournit une API pour contrôler l'enregistrement d'écran sur l'appareil à ses partenaires MDM.
Actuellement, c'est la seule façon d'appliquer les restrictions de capture d'écran.
la source
Essaye ça:
la source
J'ai vu toutes les réponses qui ne sont appropriées que pour une seule activité mais il y a ma solution qui bloquera la capture d'écran pour toutes les activités sans ajouter de code à l'activité. Commencez par créer une classe Application personnalisée et ajoutez-y une
registerActivityLifecycleCallbacks
.Ensuite, enregistrez-la dans votre manifeste.MyApplicationContext.class
Manifeste
la source
Selon ce guide officiel , vous pouvez ajouter
WindowManager.LayoutParams.FLAG_SECURE
à la disposition de votre fenêtre et cela interdira les captures d'écran.la source
J'ai utilisé cette solution pour permettre un instantané manuel dans l'application tout en interdisant la capture d'écran lorsque l'application passe en arrière-plan, j'espère que cela aide.
la source
à propos de la capture d'écran photo, FLAG_SECURE ne fonctionne pas sur l'appareil enraciné.
mais si vous surveillez le fichier de capture d'écran, vous pouvez empêcher d'obtenir le fichier original.
essayez celui- ci .
1. capture d'écran de surveillance (moniteur de fichier) avec le service à distance Android
2. supprimer l'image de capture d'écran d'origine.
3. livrez l'instance bitmap afin que vous puissiez la modifier.
la source