Erkennen, wenn Nutzer Screenshots auf dem Gerät machen

<ph type="x-smartling-placeholder">
</ph> Nachricht „Die Zahlungs-App hat diesen Screenshot erkannt“
Abbildung 1: Beispiel für die vom System bereitgestellte Toast-Nachricht die angezeigt wird, wenn der Nutzer einen Screenshot von einer App macht, die das Screenshot-Erkennungs-API

Um eine standardisierte Erkennung von Screenshots zu ermöglichen, Android 14 führt eine datenschutzfreundliche Screenshot-Erkennung ein der API erstellen. Mit dieser API können Apps Callbacks pro Aktivität registrieren. Diese Callbacks ausgelöst und der Nutzer wird benachrichtigt, während diese Aktivität sichtbar ist.

Unterstützte Anwendungsfälle

Unter Android 14 erkennt die System-API nur dann einen Screenshot, wenn der Nutzer eine bestimmte Kombination von Tastenbetätigungen. Die API erkennt keine die beim Ausführen von Testbefehlen für Screenshots erstellt werden, einschließlich ADB, oder im Rahmen von Instrumentierungstests, die die aktuellen Bildschirminhalt

Schritte zur Implementierung

Deklarieren Sie das neue DETECT_SCREEN_CAPTURE, um die Screenshot-Erkennung hinzuzufügen Berechtigung für die Installation:

<uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />

Führen Sie diese Schritte dann für jede Aktivität in Ihrer App aus, bei der Nutzende Screenshots erstellen:

  1. Implementieren Sie einen Callback, indem Sie die Funktion onScreenCapture() überschreiben. In dieser kann deine App eine Aktion ausführen, z. B. einen anderen Nutzer warnen, Jemand hat einen Screenshot von einer Unterhaltung gemacht.

    Kotlin

    val screenCaptureCallback = Activity.ScreenCaptureCallback {
        // Add logic to take action in your app.
    }
    

    Java

    final Activity.ScreenCaptureCallback screenCaptureCallback =
        new Activity.ScreenCaptureCallback() {
            @Override
            public void onScreenCaptured() {
                // Add logic to take action in your app.
            }
        };
    
  2. Registrieren Sie in der onStart()-Methode der Aktivität den Screenshot-Callback.

    Kotlin

    override fun onStart() {
        super.onStart()
        // Pass in the callback created in the previous step 
        // and the intended callback executor (e.g. Activity's mainExecutor).
        registerScreenCaptureCallback(mainExecutor, screenCaptureCallback)
    }
    

    Java

    @Override
    protected void onStart() {
        super.onStart();
        // Pass in the callback created in the previous step 
        // and the intended callback executor (e.g. Activity's mainExecutor).
        registerScreenCaptureCallback(executor, screenCaptureCallback);
    }
    
  3. Heben Sie in der onStop()-Methode der Aktivität den Screenshot-Callback auf:

    Kotlin

    override fun onStop() {
        super.onStop()
        unregisterScreenCaptureCallback(screenCaptureCallback)
    }
    

    Java

    @Override
    protected void onStop() {
        super.onStop();
        unregisterScreenCaptureCallback(screenCaptureCallback);
    }
    

Möglichkeit zum Erstellen von Screenshots steuern

Wenn Sie nicht möchten, dass die Inhalte einer App-Aktivität in Screenshots erscheinen, oder Auf nicht sicheren Displays setzen Sie das Anzeige-Flag FLAG_SECURE.

Kotlin

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

Java

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