Comment empêcher la Capture D'écran dans Android

Est-il possible d'empêcher l'enregistrement d'écran dans l'Application Android?

Je voudrais développer une Application sécurisée Android. En ce sens, j'ai besoin de détecter les logiciels d'enregistrement d'écran qui fonctionnent en arrière-plan et de les tuer. J'ai utilisé le drapeau sécurisé pour empêcher les captures d'écran. Mais je ne sais pas est-il possible d'empêcher la capture vidéo de L'écran Android aussi. Faites-moi savoir comment empêcher la capture d'écran (vidéo / captures d'écran).

50
demandé sur CommonGuy 2015-02-19 15:40:24

8 réponses

Je vais dire qu'il est Impossible d'empêcher complètement la capture d'écran/vidéo de toute application android par des moyens pris en charge. Mais si vous voulez seulement le bloquer pour normal appareils android, le drapeau sécurisé est substantiel.

1) le drapeau sécurisé bloque à la fois la capture d'écran normale et la capture vidéo.

Également de la documentation à ce lien dit que

Indicateur de Fenêtre: traiter le contenu de la fenêtre sécurisé, l'empêchant d'apparaître dans les captures d'écran ou d'être visualisé sur des écrans non sécurisés.

La solution ci-dessus empêchera sûrement les applications de capturer la vidéo de votre application

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 périphérique enraciné ou en utilisant le SDK,

Qui offrent peu ou pas chance de vous soit le bloquer ou recevoir une notification de celui-ci.

Par exemple: il existe un logiciel pour refléter l'écran de votre téléphone sur votre ordinateur via le SDK et donc un logiciel de capture d'écran pourrait y être utilisé, indétectable par votre application.

Voir la réponse ici.

62
répondu RobCob 2017-05-23 12:03:08

Ajoutez simplement cette ligne:

getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);

Avant votre méthode setContentView().

25
répondu Ido Naveh 2017-09-03 19:05:01

Il semble que vous savez comment désactiver les captures d'écran de votre application et il y a d'autres réponses qui vous aident à ce sujet. Mais je vais essayer de vous donner quelques informations importantes que personne ne vous donne.

1) vous ne pouvez pas avoir une application qui est 100% sécurisé de prendre des captures d'écran (photo / Vidéo). Il n'y a aucun moyen officiel de prendre des captures d'écran dans Android. Si une application enregistre des écrans, elle doit utiliser des méthodes non prises en charge (enracinement ou utilisation du SDK).

Il y a très peu de possibilités pour vous de bloquer une application si elle utilise l'accès root pour enregistrer des écrans.

2) personne n'a mentionné ce problème ici, mais soyez très prudent en utilisant WindowManager.LayoutParams.FLAG_SECURE. Il a été vérifié dans de nombreux appareils (comme sur Samsung Galaxy ACE, par exemple GT-S5830), que cela rend la vue entière brouillée. Comme ça,

entrez la description de l'image ici

Veuillez mettre un chèque comme celui-ci,

if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
}

Il fonctionne parfaitement sur les appareils ICS, donc pas de problème là-bas.

3) je aussi découvert que même sur les appareils plus récents comme Android 4.3, cela provoque des problèmes d'animation lorsque l'écran est tourné. Veuillez vérifier ce rapport de bogue.

9
répondu Aritra Roy 2015-07-21 05:28:26

Essayez ceci:

getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
8
répondu Jithu P.S 2017-04-21 11:33:32

Vous pouvez faire de votre application en tant que propriétaire de périphérique/profil et appeler setScreenCaptureDisabled(). À partir des documents , cette api effectue les opérations suivantes:

Public void setScreenCaptureDisabled (ComponentName admin, booléen désactivé) Ajouté au niveau de L'API 21

Appelé par un propriétaire de périphérique / profil pour définir si la capture d'écran est désactivée. La désactivation de la capture d'écran empêche également le contenu de être affiché sur les appareils d'affichage qui ne disposent pas d'une sortie vidéo sécurisée. Voir FLAG_SECURE pour plus détails sur les surfaces sécurisées et sécurisées afficher.

L'administrateur du périphérique appelant doit être propriétaire d'un périphérique ou d'un profil. Si c'est pas une exception sera levée. Paramètres admin qui DeviceAdminReceiver cette requête est associée à. désactivé si la capture d'écran est désactivée ou non.

Vous pouvez également devenir une application partenaireMDM(Mobile Device Management) .Les OEM fournissent des API supplémentaires à leurs applications partenaires MDM pour appareil.Par exemple, samsung fournit une api pour contrôler l'enregistrement d'écran sur l'appareil à leurs partenaires MDM.

Actuellement, c'est la seule façon d'appliquer des restrictions de capture d'écran.

7
répondu rupesh jain 2015-07-20 15:56:21

Pour désactiver la Capture D'écran:

Ajouter la ligne de code suivante dans la méthode onCreate():

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
                           WindowManager.LayoutParams.FLAG_SECURE);

Pour activer la Capture D'écran:

Recherchez LayoutParams.FLAG_SECURE et supprimez la ligne de code.

5
répondu Rajesh Shetty 2017-09-03 18:08:41

Selon ce guide officiel , vous pouvez ajouter WindowManager.LayoutParams.FLAG_SECURE à la disposition de votre fenêtre et cela empêchera les captures d'écran.

1
répondu r5d 2015-07-21 01:36:59

À propos de la photo capture d'écran, FLAG_SECURE ne fonctionne pas périphérique enraciné.

mais si vous surveillez le fichier de capture d'écran, vous pouvez empêcher d'obtenir le fichier original.

Essayez ceci un .

1. capture d'écran de Surveillance (Moniteur de fichiers) avec le service à distance android
2. supprimer l'image de capture d'écran d'origine.
3. livrer l'instance bitmap afin que vous puissiez modifier.

0
répondu Soo Chun Jung 2017-02-17 02:55:21