diff --git a/core/designsystem/src/main/java/ru/forbion/f7cloud/core/designsystem/F7SecureScreen.kt b/core/designsystem/src/main/java/ru/forbion/f7cloud/core/designsystem/F7SecureScreen.kt index 8262022..d49ec3f 100644 --- a/core/designsystem/src/main/java/ru/forbion/f7cloud/core/designsystem/F7SecureScreen.kt +++ b/core/designsystem/src/main/java/ru/forbion/f7cloud/core/designsystem/F7SecureScreen.kt @@ -1,6 +1,7 @@ package ru.forbion.f7cloud.core.designsystem import android.app.Activity +import android.content.pm.ApplicationInfo import android.view.WindowManager import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect @@ -10,15 +11,23 @@ import androidx.compose.ui.platform.LocalContext * Пока этот экран на виду — окно помечено FLAG_SECURE: содержимое не попадает * в скриншоты, превью в «недавних» и запись экрана. Вешать на чувствительные * экраны (ввод пароля/PIN). Флаг снимается при уходе с экрана. + * + * В debug-сборке (FLAG_DEBUGGABLE) флаг НЕ ставится — иначе невозможен автономный + * визуал-тест на эмуляторе (screencap возвращает пустой кадр). Релиз — всегда защищён. */ @Composable fun F7SecureScreen() { val context = LocalContext.current DisposableEffect(Unit) { + val debuggable = (context.applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE) != 0 val window = (context as? Activity)?.window - window?.addFlags(WindowManager.LayoutParams.FLAG_SECURE) + if (!debuggable) { + window?.addFlags(WindowManager.LayoutParams.FLAG_SECURE) + } onDispose { - window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) + if (!debuggable) { + window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) + } } } }