Um die Erkennung von Screenshots zu standardisieren, wird in Android 14 eine datenschutzfreundliche API für die Erkennung von Screenshots eingeführt. Mit dieser API können Apps Rückrufe pro Aktivität registrieren. Diese Rückrufe werden aufgerufen und der Nutzer wird benachrichtigt, wenn er einen Screenshot aufnimmt, 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 Hardwaretasten drückt. Die API erkennt keine Screenshots, die beim Ausführen von Testbefehlen im Zusammenhang mit Screenshots erstellt werden, einschließlich ADB, oder in Instrumentierungstests, bei denen der aktuelle Bildschirminhalt des Geräts erfasst wird.
Schritte zur Implementierung
Wenn Sie die Screenshot-Erkennung hinzufügen möchten, deklarieren Sie die neue Berechtigung DETECT_SCREEN_CAPTURE
zur Installationszeit:
<uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />
Führen Sie dann die folgenden Schritte für jede Aktivität in Ihrer App aus, bei der Nutzer Screenshots erstellen könnten:
Implementieren Sie einen Callback, indem Sie die Funktion
onScreenCapture()
überschreiben. In diesem Rückruf kann Ihre App Maßnahmen ergreifen, z. B. einen anderen Nutzer warnen, dass jemand einen Screenshot einer Unterhaltung gemacht hat.val screenCaptureCallback = Activity.ScreenCaptureCallback {
// Add logic to take action in your app.
}final Activity.ScreenCaptureCallback screenCaptureCallback =
new Activity.ScreenCaptureCallback() {
@Override
public void onScreenCaptured() {
// Add logic to take action in your app.
}
};Registrieren Sie den Screenshot-Callback in der
onStart()
-Methode der Aktivität.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)
}@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);
}Heben Sie in der
onStop()
-Methode der Aktivität die Registrierung des Screenshot-Callbacks auf:
Möglichkeit zum Erstellen von Screenshots steuern
Wenn Sie nicht möchten, dass der Inhalt der Aktivitäten einer App in Screenshots oder auf nicht sicheren Displays angezeigt wird, setzen Sie das Displayflag FLAG_SECURE
.
activity.getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE)
activity.getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);