From e1a94be9c388932c8baff62ab9b880b59480eac6 Mon Sep 17 00:00:00 2001
From: Hee Tatt Ooi <hee.tatt.ooi@sap.com>
Date: Tue, 2 Jun 2020 22:31:33 +0200
Subject: [PATCH] Prevent screenshot of the app for all activities (#108)

* Prevent screenshot of the app for all activities

* fix ktlint

* code smell fix

Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com>
---
 .../coronawarnapp/CoronaWarnApplication.kt    | 39 ++++++++++++++++++-
 1 file changed, 38 insertions(+), 1 deletion(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt
index 668dd8864..c615cc64d 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/CoronaWarnApplication.kt
@@ -1,15 +1,19 @@
 package de.rki.coronawarnapp
 
+import android.app.Activity
 import android.app.Application
 import android.content.Context
+import android.os.Bundle
 import android.util.Log
+import android.view.WindowManager
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleObserver
 import androidx.lifecycle.OnLifecycleEvent
 import androidx.lifecycle.ProcessLifecycleOwner
 import de.rki.coronawarnapp.notification.NotificationHelper
 
-class CoronaWarnApplication : Application(), LifecycleObserver {
+class CoronaWarnApplication : Application(), LifecycleObserver,
+    Application.ActivityLifecycleCallbacks {
 
     companion object {
         val TAG: String? = CoronaWarnApplication::class.simpleName
@@ -31,6 +35,7 @@ class CoronaWarnApplication : Application(), LifecycleObserver {
         NotificationHelper.createNotificationChannel()
         super.onCreate()
         ProcessLifecycleOwner.get().lifecycle.addObserver(this)
+        registerActivityLifecycleCallbacks(this)
     }
 
     /**
@@ -50,4 +55,36 @@ class CoronaWarnApplication : Application(), LifecycleObserver {
         isAppInForeground = true
         Log.v(TAG, "App foregrounded")
     }
+
+    override fun onActivityPaused(activity: Activity) {
+        // does not override function. Empty on intention
+    }
+
+    override fun onActivityStarted(activity: Activity) {
+        // does not override function. Empty on intention
+    }
+
+    override fun onActivityDestroyed(activity: Activity) {
+        // does not override function. Empty on intention
+    }
+
+    override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
+        // does not override function. Empty on intention
+    }
+
+    override fun onActivityStopped(activity: Activity) {
+        // does not override function. Empty on intention
+    }
+
+    override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
+        // prevents screenshot of the app for all activities
+        activity.window.setFlags(
+            WindowManager.LayoutParams.FLAG_SECURE,
+            WindowManager.LayoutParams.FLAG_SECURE
+        )
+    }
+
+    override fun onActivityResumed(activity: Activity) {
+        // does not override function. Empty on intention
+    }
 }
-- 
GitLab