Para evitar la captura de pantalla en una aplicación de Android, puede utilizar el FLAG_SECURE bandera para evitar capturas de pantalla y grabación de pantalla de aplicaciones. Cuando se establece esta marca, Android evita que el contenido de la aplicación aparezca en capturas de pantalla, grabaciones de pantalla y la miniatura de la aplicación reciente.
Para implementar esto, simplemente configure la bandera en su ventana de actividad de esta manera:
importar android.view.WindowManager .window.setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE )
1. Deshabilite la captura de pantalla a nivel de aplicación
Si desea deshabilitar la captura de pantalla para toda la aplicación, la mejor opción es aplicar la bandera en la clase Aplicación.
- en el tuyo Solicitud clase, registre la devolución de llamada del ciclo de vida de la actividad y aplique la bandera segura en onActivityCreated() método. De esta manera, cada vez que se crea una tarea, la bandera de seguridad se aplicará automáticamente. paquete info.androidhive.screen_capture importar android.app.Activity importar android.app.Application importar android.os.Bundle importar android.view.WindowManager clase MyApplication: Aplicación() { anular diversión onCreate() { super.onCreate() RegisterActivityLifeCycle( ) } diversión privada RegisterActivityLifeCycle() { RegisterActivityLifecycleCallbacks(objeto: ActivityLifecycleCallbacks { anular diversión onActivityCreated(actividad: Actividad, saveInstanceState: ¿Paquete?) { DisableScreenCapture(actividad) } anular diversión onActivityStarted(actividad: Actividad) {} Anular diversión onActivityResumed(actividad: Actividad ) ) {} anula la diversión onActivityPaused(actividad: Actividad) {} anula la diversión onActivityStopped(actividad: Actividad) {} anula la diversión onActivitySaveInstanceState(actividad: Actividad, outState: Bundle) {} anula la diversión onActivityDestroyed(actividad: Actividad) {} }) } diversión privada apagarScreenCapture(actividad: Actividad) { actividad.window.setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE ) } }
- No olvides agregar la clase de aplicación a tu archivo. etiquetate a ti mismo AndroidManifest.xml
2. Desactive la captura de pantalla solo en determinadas actividades
Si desea deshabilitar la captura de pantalla solo en actividades seleccionadas, debe aplicar la marca solo en esas actividades. Puedes hacerlo adentro suCrear() O enReanudar() método. clase MainActivity: AppCompatActivity() { anular diversión onCreate(savedInstanceState: ¿Paquete?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_main) } anular diversión onResume() { super.onResume() desactivarScreenCapture() } diversión privada enableScreenCapture() { window.setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE ) } }
3. Permitir captura de pantalla
Una vez que se aplica este indicador, si desea permitir la captura de pantalla nuevamente, el indicador de seguridad se puede eliminar usando borrar bandera() método. clase MainActivity: AppCompatActivity() { anular diversión onCreate(savedInstanceState: ¿Paquete?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_main) } anular diversión onResume() { super.onResume() enableScreenCapture() } diversión privada EnableScreenCapture(){ window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) } }