Android使应用程序可以使用android.permission.SYSTEM_ALERT_WINDOW覆盖其他应用程序,这被称为 float /叠加应用程序。例如,Facebook Messenger在屏幕边缘始终可见聊天气泡。

我的问题是:是否有可能在Java代码中检测到或阻止任何从我的应用程序中获取的应用程序?

最佳答案

您可以重写一个View#onFilterTouchEventForSecurity()方法,以检测运动事件是否具有FLAG_WINDOW_IS_OBSCURED。这将让您知道是否在 View 上方绘制了一些内容。

@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添加到 View 中。

关于android - Android检测或阻止 float /重叠式应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36923301/

10-11 22:16
查看更多