Ответ 1
Существует метод View#onFilterTouchEventForSecurity()
, который вы можете переопределить, чтобы определить, имеет ли событие движения FLAG_WINDOW_IS_OBSCURED
. Это даст вам знать, если что-то нарисовано поверх вашего представления.
@Override
public boolean onFilterTouchEventForSecurity(MotionEvent event) {
if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) == MotionEvent.FLAG_WINDOW_IS_OBSCURED){
// show error message
return false;
}
return super.onFilterTouchEventForSecurity(event);
}
Если вы просто хотите защитить свое приложение от крана, связанного с подключением, из-за другого приложения, использующего ваше приложение, вы можете добавить setFilterTouchesWhenObscured
к своим представлениям через XML или программно.