Запретить скриншот в фоновом режиме и разрешить Cordova на переднем плане

У меня есть ситуация, когда мне нужно предотвратить снимки экрана, когда приложение перемещается в фоновый режим или в недавний список, а также когда приложение переходит на передний план, мне нужно разрешить пользователю делать снимки экрана.

Решения, которые я пробовал в MainActivity.java.

  1. Используя 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);
        }
    
  2. Добавление отдельного макета для отображения/скрытия в 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);
 }`

Я надеюсь, что это поможет кому-то.

0 ответов

Другие вопросы по тегам