Android检测或阻止浮动/覆盖应用程序

Android检测或阻止浮动/覆盖应用程序,android,Android,Android允许应用程序通过Android.permission.SYSTEM_ALERT_窗口绘制其他应用程序,称为浮动/覆盖应用程序。例如,Facebook Messenger总是在屏幕边缘显示聊天泡泡 我的问题是:是否可以在Java代码中检测或阻止任何应用程序覆盖我的应用程序?有一个视图#onFilterTouchEventForSecurity()方法,您可以覆盖该方法来检测运动事件是否有标志窗口_被遮挡。这将让您知道是否在视图顶部绘制了某些内容 @Override public bo

Android允许应用程序通过Android.permission.SYSTEM_ALERT_窗口绘制其他应用程序,称为浮动/覆盖应用程序。例如,Facebook Messenger总是在屏幕边缘显示聊天泡泡

我的问题是:是否可以在Java代码中检测或阻止任何应用程序覆盖我的应用程序?

有一个
视图#onFilterTouchEventForSecurity()
方法,您可以覆盖该方法来检测运动事件是否有
标志窗口_被遮挡
。这将让您知道是否在视图顶部绘制了某些内容

@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);
}

如果您只是想保护您的应用程序不受另一个应用程序在您的应用程序上绘制的点击劫持的影响,您可以通过XML或编程方式将
setFilterTouchesWhenObscured
添加到您的视图中。

谢谢,我们将检查并让您知道这是否起作用它与facebook messenger气泡检测不起作用。但根据文件,这是唯一的办法#Android…有完整的代码吗?为什么需要添加到视图而不是活动?感谢更新版本,您可以请求屏幕录制权限,并比较您绘制的内容和屏幕过滤器上的内容。如果将视图级别上的“隐藏”设置为“真”,则还可以修复此问题issue@BartBurg嗨,兄弟,你能提供代码来解决吗?谢谢