Android检测或阻止浮动/重叠式应用 [英] Android detect or block floating/overlaying apps
问题描述
Android使应用程序可以使用android.permission.SYSTEM_ALERT_WINDOW覆盖其他应用程序,它被称为浮动/叠加应用程序.例如,Facebook Messenger在屏幕边缘始终可见聊天气泡.
Android enables apps to draw over other apps with android.permission.SYSTEM_ALERT_WINDOW and it's called a floating/overlaying app. For example Facebook Messenger has always visible chat bubbles at the edges of screen.
我的问题是:是否有可能在Java代码中检测或阻止使用我的应用程序的任何应用程序?
My question is: Is it possible to detect or block in Java code any app which draws over my app?
推荐答案
有一个 View#onFilterTouchEventForSecurity()
方法,您可以重写该方法以检测运动事件是否具有 FLAG_WINDOW_IS_OBSCURED 代码>.这将让您知道是否在视图上方绘制了一些内容.
There is a View#onFilterTouchEventForSecurity()
method you can override to detect if the motion event has the FLAG_WINDOW_IS_OBSCURED
. This will let you know if something is drawn on top of your 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
.
If you just want to protect your app from tap jacking due to another app drawing over your app you can add setFilterTouchesWhenObscured
to your views via XML or programmatically.
这篇关于Android检测或阻止浮动/重叠式应用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!