Запретить скриншот в фоновом режиме и разрешить Cordova на переднем плане
У меня есть ситуация, когда мне нужно предотвратить снимки экрана, когда приложение перемещается в фоновый режим или в недавний список, а также когда приложение переходит на передний план, мне нужно разрешить пользователю делать снимки экрана.
Решения, которые я пробовал в MainActivity.java.
Используя FLAG_SECURE в onPause и onResume, как показано ниже
public void onPause() { this.getWindow().setFlags(LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); super.onPause(); } public void onResume() { super.onResume(); this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); }
Добавление отдельного макета для отображения/скрытия в OnPause и OnResume
Но ни один из них не работает. Пожалуйста, помогите мне в этом, будь то код Cordova или Android.
Обновлено:
Проведя так много часов, испробовав различные решения и сославшись на несколько плагинов Cordova, наконец удалось решить эту проблему, используя приведенный ниже код.
Вместо установки FLAG_SECURE в onResume и onPause. Его можно использовать, как показано ниже.
`@Override
public void onWindowFocusChanged(boolean hasFocus) {
isWindowFocused = hasFocus;
if(hasFocus) {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
} else {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
}
if (isBackPressed && !hasFocus) {
isBackPressed = false;
isWindowFocused = true;
}
super.onWindowFocusChanged(hasFocus);
}`
Я надеюсь, что это поможет кому-то.