我一直在android应用程序中实现窃听防御,但我发现FLAG_WINDOW_IS_OBSCURED在android 7.0上设置了标志,但在android 10.0上没有设置,而窗口被另一个应用程序遮挡。
你知道为什么会发生吗?
我在模拟器和物理设备上测试了它。覆盖测试应用程序是黄昏。官方文档感觉没什么用。
我发现了这个评论:
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);
}
Run Code Online (Sandbox Code Playgroud)
在所有其他活动扩展的 BaseActivity 中。
我认为视图的Android 标签
android:filterTouchesWhenObscured
使用了相同的标志FLAG_WINDOW_IS_OBSCURED(如果我错了,请纠正我):
| 归档时间: |
|
| 查看次数: |
2205 次 |
| 最近记录: |