我一直在android应用程序中实现tapjacking defence,但我发现标记FLAG_WINDOW_IS_OBSCURED
在android 7.0上设置,而在android 10.0上没有设置,同时窗口被另一个应用程序遮挡。
你知道为什么会这样吗?
我在模拟器和物理设备上都测试了它。测试覆盖的应用程序是twilight。Official documentation感觉没用。
我发现了这样的评论:
FLAG_WINDOW_IS_OBSCURED仅在叠加层中继触摸事件且触摸坐标实际上被遮挡时才起作用
这可能表明,在较新的Android版本中,它也必须模糊触摸坐标,但我找不到任何模糊触摸坐标的应用程序来测试它。
为了集中检测我使用的重叠应用程序:
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
final boolean obscuredTouch = (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0;
if(obscuredTouch) return false;
return super.dispatchTouchEvent(event);
}
所有其他活动扩展的BaseActivity中。
Android标签android:filterTouchesWhenObscured
的视图使用相同的标志FLAG_WINDOW_IS_OBSCURED
下面我想(纠正我,如果我错了):
1条答案
按热度按时间pbwdgjma1#
从Android 10及更高版本开始,我们必须使用FLAG_WINDOW_IS_PARTIALLY_OBSCURED。