Android: есть ли способ применить android:filterTouchesWhenObscured=»true» к каждому макету?

#java #android #xml #security #events

#java #Android #xml #Безопасность #Мероприятия

Вопрос:

Я хочу обнаруживать и воздействовать на наложения, скрывающие мое приложение.

У меня есть следующий код, чтобы решить, что делать:

 final View.OnTouchListener filterTouchListener = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if ((event.getFlags() amp; MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0) {
                Toast.makeText(v.getContext(), "Full overlay detected", Toast.LENGTH_SHORT).show();
                return false;
            }
            if ((event.getFlags() amp; MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) != 0) {
                Toast.makeText(v.getContext(), "Partial overlay detected", Toast.LENGTH_SHORT).show();
                return false;
            }
            return false;
        }
    };
    view.setOnTouchListener(filterTouchListener);
  

Я попытался применить и наследовать следующее в onCreate(), чтобы применить «filterTouchesWhenObscured» к каждому действию:

 View view = findViewById(android.R.id.content).getRootView();

view.setFilterTouchesWhenObscured(true);
  

Но я получаю разное поведение, если добавляю его через Java или добавляю в макет;

Программное решение блокирует все события касания и не запускает OnTouchListener.

Решение для компоновки позволяет мне использовать OnTouchListener, но его необходимо применять к каждому макету вручную.

Есть ли способ получить поведение android:filterTouchesWhenObscured=»true», не добавляя его вручную в каждый отдельный макет?