#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», не добавляя его вручную в каждый отдельный макет?