FLAG_WINDOW_IS_OBSCURED无法在较新的Android上运行

kgsdhlau  于 2022-12-02  发布在  Android
关注(0)|答案(1)|浏览(276)

我一直在android应用程序中实现tapjacking defence,但我发现标记FLAG_WINDOW_IS_OBSCURED在android 7.0上设置,而在android 10.0上没有设置,同时窗口被另一个应用程序遮挡。
你知道为什么会这样吗?
我在模拟器和物理设备上都测试了它。测试覆盖的应用程序是twilightOfficial 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下面我想(纠正我,如果我错了):

pbwdgjma

pbwdgjma1#

从Android 10及更高版本开始,我们必须使用FLAG_WINDOW_IS_PARTIALLY_OBSCURED

相关问题